ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2026-01-24 00:14:48
Exec Total Coverage
Lines: 1110 1761 63.0%
Functions: 39 51 76.5%
Branches: 860 2306 37.3%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::shared_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 zfix intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void annot_incompatible(string const& key1, string const& key2)
141 {
142 annot_errstr(fmt::format("ERROR: Annotation '@{}' not compatible with '@{}'", key1, key2));
143 }
144 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
145 {
146 owning_vector<ASTAnnotation>& set = list->set;
147 annot_row = list->location.first_line;
148 annot_col = list->location.first_column;
149 std::set<std::string> used_keys;
150 for(size_t q = 0; q < set.size(); ++q)
151 {
152 ASTAnnotation* a = set[q];
153 AnnotData data = AnnotData();
154 data.key = a->key->getValue();
155 data.type = ANNTY_NONE;
156 data.strval = "";
157 data.intval = 0;
158 if(a->strval)
159 {
160 data.type = ANNTY_STR;
161 data.strval = a->strval->getValue();
162 }
163 else if(a->intval)
164 {
165 data.type = ANNTY_INT;
166 data.intval = zslongToFix(a->intval->getValue(nullptr));
167 }
168
169 data.val = "";
170 data.unescaped_val = "";
171 switch(data.type)
172 {
173 case ANNTY_STR:
174 data.val = data.strval;
175 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
176 break;
177 case ANNTY_INT:
178 data.val = data.unescaped_val = data.intval.str();
179 break;
180 }
181 annot_err_txt = "@" + data.key + "(" + data.val + ")";
182
183 if(used_keys.contains(data.key))
184 {
185 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
186 continue;
187 }
188 if(!fn(data))
189 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
190 }
191 delete list;
192 }
193
194 ASTExpr* handle_statement_expr(ASTExpr* expr)
195 {
196 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
197 {
198 increm->is_pre = true;
199 }
200 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
201 {
202 decrem->is_pre = true;
203 }
204 return expr;
205 }
206
207 #pragma warning( disable : 4065 )
208
209 #line 210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
210
211 # ifndef YY_CAST
212 # ifdef __cplusplus
213 # define YY_CAST(Type, Val) static_cast<Type> (Val)
214 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
215 # else
216 # define YY_CAST(Type, Val) ((Type) (Val))
217 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
218 # endif
219 # endif
220 # ifndef YY_NULLPTR
221 # if defined __cplusplus
222 # if 201103L <= __cplusplus
223 # define YY_NULLPTR nullptr
224 # else
225 # define YY_NULLPTR 0
226 # endif
227 # else
228 # define YY_NULLPTR ((void*)0)
229 # endif
230 # endif
231
232 #include "y.tab.hpp"
233
234 /* Symbol kind. */
235 enum yysymbol_kind_t
236 {
237 YYSYMBOL_YYEMPTY = -2,
238 YYSYMBOL_YYEOF = 0, /* "end of file" */
239 YYSYMBOL_YYerror = 1, /* error */
240 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
241 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
242 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
243 YYSYMBOL_FOR = 5, /* FOR */
244 YYSYMBOL_LOOP = 6, /* LOOP */
245 YYSYMBOL_IF = 7, /* IF */
246 YYSYMBOL_ELSE = 8, /* ELSE */
247 YYSYMBOL_SWITCH = 9, /* SWITCH */
248 YYSYMBOL_CASE = 10, /* CASE */
249 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
250 YYSYMBOL_RETURN = 12, /* RETURN */
251 YYSYMBOL_IMPORT = 13, /* IMPORT */
252 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
253 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
254 YYSYMBOL_WHILE = 16, /* WHILE */
255 YYSYMBOL_BREAK = 17, /* BREAK */
256 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
257 YYSYMBOL_ZCONST = 19, /* ZCONST */
258 YYSYMBOL_DO = 20, /* DO */
259 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
260 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
261 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
262 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
263 YYSYMBOL_DEFINE = 25, /* DEFINE */
264 YYSYMBOL_ENUM = 26, /* ENUM */
265 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
266 YYSYMBOL_USING = 28, /* USING */
267 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
268 YYSYMBOL_ZASM = 30, /* ZASM */
269 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
270 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
271 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
272 YYSYMBOL_UNTIL = 34, /* UNTIL */
273 YYSYMBOL_UNLESS = 35, /* UNLESS */
274 YYSYMBOL_REPEAT = 36, /* REPEAT */
275 YYSYMBOL_INLINE = 37, /* INLINE */
276 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
277 YYSYMBOL_STATIC = 39, /* STATIC */
278 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
279 YYSYMBOL_NEW = 41, /* NEW */
280 YYSYMBOL_DELETE = 42, /* DELETE */
281 YYSYMBOL_CASSERT = 43, /* CASSERT */
282 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
283 YYSYMBOL_ZVOID = 45, /* ZVOID */
284 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
285 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
286 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
287 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
288 YYSYMBOL_ZLONG = 50, /* ZLONG */
289 YYSYMBOL_ZRGB = 51, /* ZRGB */
290 YYSYMBOL_COMMA = 52, /* COMMA */
291 YYSYMBOL_DOT = 53, /* DOT */
292 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
293 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
294 YYSYMBOL_COLON = 56, /* COLON */
295 YYSYMBOL_IN = 57, /* IN */
296 YYSYMBOL_LPAREN = 58, /* LPAREN */
297 YYSYMBOL_RPAREN = 59, /* RPAREN */
298 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
299 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
300 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
301 YYSYMBOL_LBRACE = 63, /* LBRACE */
302 YYSYMBOL_RBRACE = 64, /* RBRACE */
303 YYSYMBOL_QMARK = 65, /* QMARK */
304 YYSYMBOL_ARROW = 66, /* ARROW */
305 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
306 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
307 YYSYMBOL_NOT = 69, /* NOT */
308 YYSYMBOL_BITNOT = 70, /* BITNOT */
309 60395 YYSYMBOL_EXPN = 71, /* EXPN */
310 YYSYMBOL_TIMES = 72, /* TIMES */
311 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
312 YYSYMBOL_MODULO = 74, /* MODULO */
313 YYSYMBOL_PLUS = 75, /* PLUS */
314 YYSYMBOL_MINUS = 76, /* MINUS */
315 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
316 1730669 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
317 1730669 YYSYMBOL_LE = 79, /* LE */
318 YYSYMBOL_LT = 80, /* LT */
319 4156 YYSYMBOL_GE = 81, /* GE */
320 4156 YYSYMBOL_GT = 82, /* GT */
321
1/2
✓ Branch 0 taken 4156 times.
✗ Branch 1 not taken.
4156 YYSYMBOL_EQ = 83, /* EQ */
322 YYSYMBOL_NE = 84, /* NE */
323
3/8
✓ Branch 0 taken 60451 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60451 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 60451 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
60451 YYSYMBOL_BITAND = 85, /* BITAND */
324 YYSYMBOL_BITXOR = 86, /* BITXOR */
325 YYSYMBOL_BITOR = 87, /* BITOR */
326 YYSYMBOL_AND = 88, /* AND */
327 71037 YYSYMBOL_OR = 89, /* OR */
328 1877 YYSYMBOL_XOR = 90, /* XOR */
329 4233 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
330 10000 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
331 2595 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
332 665920 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
333 761318 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
334 3448 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
335 20 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
336 39239 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
337 170976 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
338 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
339 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
340 6 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
341 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
342 YYSYMBOL_CAST = 104, /* CAST */
343 YYSYMBOL_RANGE = 105, /* RANGE */
344 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
345 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
346 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
347 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
348 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
349 60453 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
350 118171 YYSYMBOL_PERCENT = 112, /* PERCENT */
351 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
352 YYSYMBOL_INVMOD = 114, /* INVMOD */
353 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
354 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
355 YYSYMBOL_HANDLE = 117, /* HANDLE */
356 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
357 YYSYMBOL_ADDR = 119, /* ADDR */
358 YYSYMBOL_HASH = 120, /* HASH */
359 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
360 YYSYMBOL_OPTION = 122, /* OPTION */
361 YYSYMBOL_INHERIT = 123, /* INHERIT */
362 YYSYMBOL_IDENTIFIER = 124, /* IDENTIFIER */
363 YYSYMBOL_QUOTEDSTRING = 125, /* QUOTEDSTRING */
364 YYSYMBOL_CASESTRING = 126, /* CASESTRING */
365 YYSYMBOL_IMPORTSTRING = 127, /* IMPORTSTRING */
366 YYSYMBOL_SINGLECHAR = 128, /* SINGLECHAR */
367 YYSYMBOL_NUMBER = 129, /* NUMBER */
368 YYSYMBOL_LONGNUMBER = 130, /* LONGNUMBER */
369 YYSYMBOL_YYACCEPT = 131, /* $accept */
370 YYSYMBOL_Init = 132, /* Init */
371 YYSYMBOL_Global_List = 133, /* Global_List */
372 YYSYMBOL_Global_Statement = 134, /* Global_Statement */
373 YYSYMBOL_Trail_Comma_RBrace = 135, /* Trail_Comma_RBrace */
374 YYSYMBOL_Namespace = 136, /* Namespace */
375 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
376 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
377 5063 YYSYMBOL_Using = 139, /* Using */
378 5063 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
379 5063 YYSYMBOL_Import = 141, /* Import */
380
2/2
✓ Branch 0 taken 5062 times.
✓ Branch 1 taken 1 times.
5063 YYSYMBOL_IncludePath = 142, /* IncludePath */
381 YYSYMBOL_Option = 143, /* Option */
382 5062 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
383 5062 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
384 5062 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
385
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5062 times.
5062 YYSYMBOL_DataType = 147, /* DataType */
386 5062 YYSYMBOL_DataType_Mods = 148, /* DataType_Mods */
387 5062 YYSYMBOL_DataType_Base = 149, /* DataType_Base */
388
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_ScriptTypeDef = 150, /* ScriptTypeDef */
389 YYSYMBOL_Data = 151, /* Data */
390
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_Data_List = 152, /* Data_List */
391 YYSYMBOL_Data_Element = 153, /* Data_Element */
392 YYSYMBOL_Data_Element_Array_List = 154, /* Data_Element_Array_List */
393 YYSYMBOL_Single_Data_req_assign = 155, /* Single_Data_req_assign */
394 YYSYMBOL_Data_Element_Array_Element = 156, /* Data_Element_Array_Element */
395 YYSYMBOL_Data_Element_Array_Element_Size_List = 157, /* Data_Element_Array_Element_Size_List */
396 YYSYMBOL_Function = 158, /* Function */
397 YYSYMBOL_Function_Typeless = 159, /* Function_Typeless */
398 YYSYMBOL_Function_Heading = 160, /* Function_Heading */
399 YYSYMBOL_FunctionTemplateList = 161, /* FunctionTemplateList */
400 YYSYMBOL_Function_Parameters_List = 162, /* Function_Parameters_List */
401 YYSYMBOL_Function_Parameters_Element = 163, /* Function_Parameters_Element */
402 YYSYMBOL_Function_OptParams_List = 164, /* Function_OptParams_List */
403 YYSYMBOL_Function_VarArg_Element = 165, /* Function_VarArg_Element */
404 YYSYMBOL_Class_Ident = 166, /* Class_Ident */
405 YYSYMBOL_Class = 167, /* Class */
406 YYSYMBOL_Class_Block = 168, /* Class_Block */
407 YYSYMBOL_Class_Block_List = 169, /* Class_Block_List */
408 YYSYMBOL_Class_Constructor = 170, /* Class_Constructor */
409 YYSYMBOL_Class_Destructor = 171, /* Class_Destructor */
410 YYSYMBOL_Class_Data = 172, /* Class_Data */
411 YYSYMBOL_Class_Block_Element = 173, /* Class_Block_Element */
412 YYSYMBOL_Annotated_Script = 174, /* Annotated_Script */
413 YYSYMBOL_Script = 175, /* Script */
414 YYSYMBOL_Script_Type = 176, /* Script_Type */
415 YYSYMBOL_Script_Block = 177, /* Script_Block */
416 YYSYMBOL_Script_Block_List = 178, /* Script_Block_List */
417 YYSYMBOL_Script_Block_Element = 179, /* Script_Block_Element */
418 YYSYMBOL_Annotation_List = 180, /* Annotation_List */
419 YYSYMBOL_Annotation = 181, /* Annotation */
420 YYSYMBOL_Block_Statement = 182, /* Block_Statement */
421 YYSYMBOL_Statement = 183, /* Statement */
422 5063 YYSYMBOL_Statement_NoSemicolon = 184, /* Statement_NoSemicolon */
423
2/4
✓ Branch 0 taken 5063 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5063 times.
✗ Branch 3 not taken.
5063 YYSYMBOL_Statement_Block = 185, /* Statement_Block */
424 YYSYMBOL_Statement_Block_List = 186, /* Statement_Block_List */
425 YYSYMBOL_Statement_If = 187, /* Statement_If */
426 YYSYMBOL_If_Body = 188, /* If_Body */
427 YYSYMBOL_Statement_Switch = 189, /* Statement_Switch */
428 YYSYMBOL_Statement_Switch_Body = 190, /* Statement_Switch_Body */
429 YYSYMBOL_Statement_Switch_Cases = 191, /* Statement_Switch_Cases */
430 37584 YYSYMBOL_Statement_For = 192, /* Statement_For */
431 37584 YYSYMBOL_Statement_CommaList = 193, /* Statement_CommaList */
432 37584 YYSYMBOL_Statement_For_Standard = 194, /* Statement_For_Standard */
433 37584 YYSYMBOL_Statement_For_Each = 195, /* Statement_For_Each */
434 37584 YYSYMBOL_Annotated_Loop = 196, /* Annotated_Loop */
435 YYSYMBOL_Statement_Loop = 197, /* Statement_Loop */
436 1 YYSYMBOL_Statement_Loop_Inf = 198, /* Statement_Loop_Inf */
437 1 YYSYMBOL_Statement_Loop_Range = 199, /* Statement_Loop_Range */
438 1 YYSYMBOL_Statement_Loop_Range_Base = 200, /* Statement_Loop_Range_Base */
439 1 YYSYMBOL_Token_In = 201, /* Token_In */
440 1 YYSYMBOL_Statement_While = 202, /* Statement_While */
441
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
2 YYSYMBOL_Statement_Do = 203, /* Statement_Do */
442
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Repeat = 204, /* Statement_Repeat */
443
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Return = 205, /* Statement_Return */
444
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_CompileError = 206, /* Statement_CompileError */
445 YYSYMBOL_Annotated_Enum = 207, /* Annotated_Enum */
446 YYSYMBOL_DataEnum = 208, /* DataEnum */
447
2/6
✓ Branch 0 taken 5060 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5060 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5060 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
448 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
449 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
450 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
451 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
452
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
453 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
454 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
455 YYSYMBOL_Identifier = 217, /* Identifier */
456 YYSYMBOL_Func_Left = 218, /* Func_Left */
457 YYSYMBOL_Function_Call = 219, /* Function_Call */
458 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
459 830 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
460 39 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
461 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
462 3694 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
463 37983 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
464 28 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
465 27 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
466 6 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
467 31 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
468 1 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
469 5 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
470 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
471 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
472 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
473 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
474 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
475 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
476 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
477 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
478 YYSYMBOL_Expression = 240, /* Expression */
479 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
480 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
481 8 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
482
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
483 YYSYMBOL_Literal = 245, /* Literal */
484 YYSYMBOL_QuotedString = 246, /* QuotedString */
485 YYSYMBOL_Literal_String = 247, /* Literal_String */
486 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
487 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
488 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
489 };
490 typedef enum yysymbol_kind_t yysymbol_kind_t;
491
492
493 /* Default (constant) value used for initialization for null
494 right-hand sides. Unlike the standard yacc.c template, here we set
495 the default value of $$ to a zeroed-out value. Since the default
496 43558 value is undefined, this behavior is technically correct. */
497
2/6
✓ Branch 0 taken 43558 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43558 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
43558 static YYSTYPE yyval_default;
498 static YYLTYPE yyloc_default
499 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
500 27479 = { 1, 1, 1, 1 }
501
2/6
✓ Branch 0 taken 27479 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27479 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
27479 # endif
502 ;
503
504
505
506 #include <stddef.h>
507 #include <stdint.h>
508 #include <stdio.h>
509 #include <stdlib.h>
510 #include <string.h>
511
512 #ifdef short
513 1877 # undef short
514
3/8
✓ Branch 0 taken 1877 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1877 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1877 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1877 #endif
515
516 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
517 <limits.h> and (if available) <stdint.h> are included
518 so that the code can choose integer types of a good width. */
519
520 #ifndef __PTRDIFF_MAX__
521 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
522 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
523 10801 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
524 10801 # define YY_STDINT_H
525
3/8
✓ Branch 0 taken 10801 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10801 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10801 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
10801 # endif
526 #endif
527
528 /* Narrow types that promote to a signed type and that can represent a
529 signed or unsigned integer of at least N bits. In tables they can
530 save space and decrease cache pressure. Promoting to a signed type
531 helps avoid bugs in integer arithmetic. */
532
533 #ifdef __INT_LEAST8_MAX__
534 2 typedef __INT_LEAST8_TYPE__ yytype_int8;
535
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 #elif defined YY_STDINT_H
536
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 typedef int_least8_t yytype_int8;
537 #else
538 typedef signed char yytype_int8;
539 #endif
540
541 #ifdef __INT_LEAST16_MAX__
542 typedef __INT_LEAST16_TYPE__ yytype_int16;
543 #elif defined YY_STDINT_H
544 typedef int_least16_t yytype_int16;
545 #else
546 typedef short yytype_int16;
547 #endif
548
549 /* Work around bug in HP-UX 11.23, which defines these macros
550 incorrectly for preprocessor constants. This workaround can likely
551 be removed in 2023, as HPE has promised support for HP-UX 11.23
552 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
553 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
554
3/8
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4 #ifdef __hpux
555 # undef UINT_LEAST8_MAX
556 # undef UINT_LEAST16_MAX
557
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 # define UINT_LEAST8_MAX 255
558 # define UINT_LEAST16_MAX 65535
559 #endif
560
561 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
562 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
563 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
564 10039 && UINT_LEAST8_MAX <= INT_MAX)
565 typedef uint_least8_t yytype_uint8;
566 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
567 typedef unsigned char yytype_uint8;
568 10039 #else
569 10039 typedef short yytype_uint8;
570
4/10
✓ Branch 0 taken 10039 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10039 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10039 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10039 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10039 #endif
571
572 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
573 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
574 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
575 && UINT_LEAST16_MAX <= INT_MAX)
576 284507 typedef uint_least16_t yytype_uint16;
577 284507 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
578 284507 typedef unsigned short yytype_uint16;
579 #else
580 6733488 typedef int yytype_uint16;
581 #endif
582 #ifndef YYPTRDIFF_T
583 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
584 # define YYPTRDIFF_T __PTRDIFF_TYPE__
585 541605 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
586 541605 # elif defined PTRDIFF_MAX
587 541605 # ifndef ptrdiff_t
588 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
589 6191883 # endif
590 # define YYPTRDIFF_T ptrdiff_t
591 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
592 # else
593 # define YYPTRDIFF_T long
594
2/6
✓ Branch 0 taken 2502 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2502 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2502 # define YYPTRDIFF_MAXIMUM LONG_MAX
595
2/6
✓ Branch 0 taken 456547 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 456547 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
456547 # endif
596
2/6
✓ Branch 0 taken 97289 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 97289 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
97289 #endif
597
2/6
✓ Branch 0 taken 673807 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 673807 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
673807
598
2/6
✓ Branch 0 taken 3986239 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3986239 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3986239 #ifndef YYSIZE_T
599
2/6
✓ Branch 0 taken 502487 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 502487 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
502487 # ifdef __SIZE_TYPE__
600
2/6
✓ Branch 0 taken 37978 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37978 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
37978 # define YYSIZE_T __SIZE_TYPE__
601
2/6
✓ Branch 0 taken 10386 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10386 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10386 # elif defined size_t
602 # define YYSIZE_T size_t
603 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
604 966253 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
605 966253 # define YYSIZE_T size_t
606
1/4
✓ Branch 0 taken 966253 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1932506 # else
607 # define YYSIZE_T unsigned
608 # endif
609 #endif
610
611 #define YYSIZE_MAXIMUM \
612 YY_CAST (YYPTRDIFF_T, \
613 2595 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
614 2595 ? YYPTRDIFF_MAXIMUM \
615
3/8
✓ Branch 0 taken 2595 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2595 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2595 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2595 : YY_CAST (YYSIZE_T, -1)))
616
617 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
618
619
620 #ifndef YY_
621 # if defined YYENABLE_NLS && YYENABLE_NLS
622 # if ENABLE_NLS
623 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
624 1186744 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
625
1/2
✓ Branch 0 taken 1186744 times.
✗ Branch 1 not taken.
1186744 # endif
626 # endif
627 1186744 # ifndef YY_
628 1186744 # define YY_(Msgid) Msgid
629 # endif
630 2436468 #endif
631 2436468
632 2436468
633
2/2
✓ Branch 0 taken 2356484 times.
✓ Branch 1 taken 79984 times.
2436468 #ifndef YYFREE
634 79984 # define YYFREE free
635 2436468 #endif
636 2436468 #ifndef YYMALLOC
637 # define YYMALLOC malloc
638 #endif
639 #ifndef YYREALLOC
640 # define YYREALLOC realloc
641 2560 #endif
642 2560
643 2560 #ifdef __cplusplus
644 2560 typedef bool yybool;
645 2560 # define yytrue true
646 # define yyfalse false
647 2436468 #else
648
2/6
✓ Branch 0 taken 2436468 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2436468 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2436468 /* When we move to stdbool, get rid of the various casts to yybool. */
649 typedef signed char yybool;
650
2/2
✓ Branch 0 taken 1224464 times.
✓ Branch 1 taken 1212004 times.
2436468 # define yytrue 1
651 1212004 # define yyfalse 0
652 #endif
653
654 #ifndef YYSETJMP
655 # include <setjmp.h>
656 # define YYJMP_BUF jmp_buf
657 2913579 # define YYSETJMP(Env) setjmp (Env)
658 2913579 /* Pacify Clang and ICC. */
659 2913579 # define YYLONGJMP(Env, Val) \
660 2913579 do { \
661 2913579 longjmp (Env, Val); \
662 2888238 YY_ASSERT (0); \
663 } while (yyfalse)
664 #endif
665
666 #ifndef YY_ATTRIBUTE_PURE
667 329260 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
668 329260 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
669 329260 # else
670 329260 # define YY_ATTRIBUTE_PURE
671 329260 # endif
672 #endif
673 5801817
674
2/6
✓ Branch 0 taken 5801817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5801817 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5801817 #ifndef YY_ATTRIBUTE_UNUSED
675 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
676
2/4
✓ Branch 0 taken 5801817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5801817 times.
✗ Branch 3 not taken.
5801817 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
677 # else
678 # define YY_ATTRIBUTE_UNUSED
679
2/2
✓ Branch 0 taken 5157725 times.
✓ Branch 1 taken 644092 times.
5801817 # endif
680 #endif
681
682 /* The _Noreturn keyword of C11. */
683 #ifndef _Noreturn
684 # if (defined __cplusplus \
685 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
686 17 || (defined _MSC_VER && 1900 <= _MSC_VER)))
687 17 # define _Noreturn [[noreturn]]
688
2/6
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17 # elif ((!defined __cplusplus || defined __clang__) \
689 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
690 || (!defined __STRICT_ANSI__ \
691 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
692 || (defined __apple_build_version__ \
693 ? 6000000 <= __apple_build_version__ \
694 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
695 /* _Noreturn works as-is. */
696 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
697 || 0x5110 <= __SUNPRO_C)
698 # define _Noreturn __attribute__ ((__noreturn__))
699 28456 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
700 28456 # define _Noreturn __declspec (noreturn)
701 28456 # else
702
2/6
✓ Branch 0 taken 300804 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 300804 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
300804 # define _Noreturn
703 # endif
704 #endif
705
706 /* Suppress unused-variable warnings by "using" E. */
707 #if ! defined lint || defined __GNUC__
708 # define YY_USE(E) ((void) (E))
709 #else
710 # define YY_USE(E) /* empty */
711 #endif
712
713 28456 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
714
2/6
✓ Branch 0 taken 28456 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 28456 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
28456 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
715 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
719 # else
720 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
721 _Pragma ("GCC diagnostic push") \
722 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
723 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
724 # endif
725 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
726
1/2
✓ Branch 0 taken 15570 times.
✗ Branch 1 not taken.
15570 _Pragma ("GCC diagnostic pop")
727 #else
728 # define YY_INITIAL_VALUE(Value) Value
729 #endif
730 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
731 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
732 15570 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
733 #endif
734 #ifndef YY_INITIAL_VALUE
735 # define YY_INITIAL_VALUE(Value) /* Nothing. */
736 #endif
737
738 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
739 # define YY_IGNORE_USELESS_CAST_BEGIN \
740 _Pragma ("GCC diagnostic push") \
741 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
742 # define YY_IGNORE_USELESS_CAST_END \
743 _Pragma ("GCC diagnostic pop")
744 #endif
745 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
746 # define YY_IGNORE_USELESS_CAST_BEGIN
747 # define YY_IGNORE_USELESS_CAST_END
748 #endif
749
750
751 #define YY_ASSERT(E) ((void) (0 && (E)))
752
753 /* YYFINAL -- State number of the termination state. */
754 #define YYFINAL 3
755 /* YYLAST -- Last index in YYTABLE. */
756 #define YYLAST 2934
757
758 /* YYNTOKENS -- Number of terminals. */
759 #define YYNTOKENS 131
760 /* YYNNTS -- Number of nonterminals. */
761 #define YYNNTS 120
762 /* YYNRULES -- Number of rules. */
763 558790 #define YYNRULES 382
764
1/2
✓ Branch 0 taken 558790 times.
✗ Branch 1 not taken.
558790 /* YYNSTATES -- Number of states. */
765 #define YYNSTATES 743
766 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
767 #define YYMAXRHS 11
768 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
769
1/2
✓ Branch 0 taken 558790 times.
✗ Branch 1 not taken.
558790 accessed by $0, $-1, etc., in any rule. */
770 #define YYMAXLEFT 0
771
772 /* YYMAXUTOK -- Last valid token kind. */
773 #define YYMAXUTOK 385
774 558790
775 558790 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
776 558790 as returned by yylex, with out-of-bounds checking. */
777 #define YYTRANSLATE(YYX) \
778 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
779 1277826 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
780 1277826 : YYSYMBOL_YYUNDEF)
781
2/2
✓ Branch 0 taken 1203512 times.
✓ Branch 1 taken 74314 times.
1277826
782 74314 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
783 1277826 as returned by yylex. */
784 1277826 static const yytype_uint8 yytranslate[] =
785 {
786 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 719072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 719072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 719072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 598580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 598580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796
4/18
✓ Branch 0 taken 598580 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 598580 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 598580 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 598580 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1197160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 1298904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
808 1298904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
809 1298904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
810 1298904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
811 1298904 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
812 1298904 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
813 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
814 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
815 18800 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
816 18800 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
817 18800 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
818 18800 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
819 18800 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
820
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 18800 times.
18800 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
821 18800 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
822 18800 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
823 18800 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
824 125, 126, 127, 128, 129, 130
825 };
826
827 #if YYDEBUG
828
2/6
✓ Branch 0 taken 18800 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18800 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
18800 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
829 static const yytype_int16 yyrline[] =
830 {
831 0, 309, 309, 315, 318, 323, 327, 328, 329, 330,
832 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
833 1658 341, 349, 350, 356, 376, 429, 435, 446, 451, 459,
834 1658 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
835 1658 470, 480, 486, 495, 499, 503, 512, 522, 528, 533,
836 1658 538, 541, 544, 553, 556, 564, 567, 575, 580, 584,
837 1658 589, 594, 595, 596, 597, 598, 599, 600, 601, 603,
838 612, 623, 629, 640, 646, 656, 662, 666, 672, 685,
839 698, 702, 706, 712, 723, 734, 750, 761, 778, 788,
840 793, 798, 805, 813, 827, 832, 840, 846, 851, 852,
841 1680507 853, 857, 867, 875, 885, 894, 897, 908, 909, 913,
842 1680507 919, 929, 934, 945, 950, 955, 960, 974, 984, 997,
843 1680507 1011, 1015, 1016, 1020, 1021, 1022, 1023, 1024, 1035, 1273,
844 1680507 1286, 1293, 1294, 1298, 1304, 1314, 1319, 1327, 1328, 1329,
845 1680507 1330, 1331, 1332, 1333, 1341, 1347, 1355, 1361, 1367, 1373,
846 1380, 1387, 1398, 1415, 1416, 1417, 1418, 1420, 1421, 1422,
847 984912 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1436,
848
2/6
✓ Branch 0 taken 984912 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 984912 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
984912 1437, 1442, 1443, 1444, 1449, 1450, 1451, 1453, 1454, 1455,
849 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1468, 1469,
850 1474, 1475, 1479, 1480, 1484, 1489, 1496, 1501, 1509, 1510,
851 134246 1518, 1522, 1527, 1531, 1539, 1546, 1553, 1563, 1568, 1572,
852 5159 1577, 1584, 1589, 1594, 1601, 1608, 1609, 1613, 1618, 1626,
853
2/6
✓ Branch 0 taken 193387 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 193387 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
193387 1638, 1654, 1663, 1676, 1700, 1704, 1705, 1709, 1717, 1724,
854 1728, 1737, 1746, 1754, 1763, 1772, 1783, 1784, 1788, 1792,
855 1797, 1803, 1813, 1817, 1822, 1828, 1838, 1845, 1848, 1852,
856 1860, 1893, 1896, 1897, 1904, 1913, 1918, 1970, 1975, 1976,
857 1977, 1978, 1982, 1983, 1992, 2000, 2008, 2016, 2027, 2035,
858 2999327 2043, 2050, 2058, 2069, 2078, 2082, 2083, 2087, 2094, 2101,
859 2999327 2107, 2116, 2122, 2134, 2135, 2136, 2138, 2148, 2156, 2162,
860
2/6
✓ Branch 0 taken 2999327 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2999327 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2999327 2164, 2166, 2168, 2170, 2173, 2176, 2178, 2180, 2182, 2184,
861 2186, 2189, 2191, 2194, 2196, 2198, 2200, 2203, 2205, 2207,
862 2210, 2212, 2214, 2217, 2219, 2221, 2223, 2225, 2228, 2230,
863 2232, 2234, 2236, 2239, 2241, 2244, 2246, 2249, 2251, 2254,
864 2256, 2259, 2261, 2264, 2266, 2275, 2276, 2283, 2285, 2287,
865 2292, 2297, 2302, 2307, 2312, 2317, 2322, 2328, 2334, 2339,
866 2344, 2349, 2355, 2358, 2365, 2371, 2382, 2387, 2392, 2397,
867 2402, 2407, 2412, 2417, 2422, 2432, 2435, 2438, 2442, 2443,
868 194500 2444, 2445, 2449, 2456, 2462, 2466, 2475, 2476, 2481, 2493,
869 194500 2504, 2511, 2516
870 194500 };
871 194500 #endif
872 194500
873 194500 #define YYPACT_NINF (-608)
874 194500 #define YYTABLE_NINF (-354)
875
876 134246 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
877 134246 STATE-NUM. */
878
2/6
✓ Branch 0 taken 134246 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 134246 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
134246 static const yytype_int16 yypact[] =
879 {
880 -608, 96, 1783, -608, 95, 40, 58, 359, 700, 83,
881 55, -3, 145, 148, 744, 1113, 744, 744, 123, -608,
882 -608, -608, -608, -608, -608, -608, -608, -608, 66, 17,
883 213, -608, -608, 176, 228, -608, -608, -608, 233, 243,
884 -608, 12, -608, -608, 272, 289, -608, -608, -608, -608,
885 309, 7, -608, 298, -608, 149, -608, 157, 205, 240,
886
2/6
✓ Branch 0 taken 5159 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5159 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5159 315, -608, 248, -608, 271, -608, -608, -608, -7, 2508,
887 149, 700, 332, 335, 346, 346, -3, 384, 744, 12,
888 -608, -608, -608, -608, -608, 2508, 355, 291, 303, 358,
889 29, -608, -608, -608, -608, -608, 382, -608, 23, -608,
890 182, 103, 179, -608, -608, 311, 319, -608, -608, -608,
891 -608, -608, 149, 149, 149, 149, 149, 149, 149, 149,
892 313, 2632, -608, -608, -608, -608, 381, 383, -3, 2508,
893 2508, 2508, 2538, 2538, 2538, 2538, 2538, 700, -608, -608,
894 39245 -608, -608, 385, 386, -608, -608, -608, 387, 253, -608,
895 369, 302, 168, 229, 266, 118, 357, 363, 361, 364,
896 80, -608, 783, -608, -608, 391, -608, 321, -608, -608,
897 -608, -608, 46, -608, 265, 149, 1887, -608, -3, 190,
898 39245 3, -608, -608, 2508, 891, 1954, 149, -608, 2508, 2508,
899 39245 -608, -608, 443, 1185, -608, 541, 149, 388, -608, -608,
900 39245 -608, -608, -608, -608, -608, -608, -608, -608, 397, 1239,
901 39245 -608, -3, 334, 403, -608, 406, 407, -608, -608, -608,
902 39245 2667, -608, -608, 411, -608, 47, 412, 103, 347, 343,
903
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 39245 times.
39245 414, -608, 417, -608, 49, -608, -608, -608, -608, -608,
904 39245 107, 2283, 2508, 356, -608, -608, 2538, 2538, 2538, 2538,
905 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538,
906 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2508, 2508,
907 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
908 39229 2508, 2508, 1832, -608, 30, -608, -608, 149, 46, 421,
909
2/6
✓ Branch 0 taken 16 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
16 -608, -608, 1936, -608, 428, -608, 444, 446, 447, 448,
910 -608, -608, -608, -608, 449, -608, 372, -608, -608, 250,
911 435, 445, 15, 453, 392, 394, 395, 396, 400, 401,
912 -608, 177, -608, -608, 2508, 450, 451, 454, 460, 2508,
913 466, 0, 9, 1563, 467, 468, 454, 470, 440, -608,
914 1648216 1185, -608, 475, -608, 476, 477, 10, 478, 54, -608,
915 1648216 -608, 1311, -608, -608, -608, -608, -608, -608, -608, -608,
916 1648216 -608, 525, -608, -608, -608, 481, 482, 483, 32, -608,
917 1648216 484, 700, 10, 480, 72, -608, -608, 43, -608, 1626,
918 1648216 -608, 2508, -608, -608, -608, -608, -608, -608, -608, -608,
919 -608, -608, -608, -608, 485, 489, 2303, -608, 2379, -608,
920 2508, 339, -608, 195, -608, 479, -608, -608, 369, 369,
921 369, 302, 302, 168, 168, 229, 229, 229, 229, 266,
922 266, 266, 266, 118, 357, 363, 361, 493, 364, -608,
923 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
924 -608, -608, -608, 360, -608, -608, -608, 46, -608, 2508,
925 -608, -608, -608, -608, -608, -608, -608, -608, -608, 34,
926 494, 495, -608, -608, -608, 425, -608, -608, -608, -608,
927 -608, -608, 2508, -608, 501, 1689, 2044, 2108, -608, 2508,
928 -608, 2508, -608, 502, -608, 503, 81, -608, 2508, 2508,
929 -608, 2508, 505, -608, -608, -608, -608, -608, -608, -608,
930 893 -608, 1563, -608, -608, -608, -608, -608, -608, -608, 541,
931 893 2508, 149, 507, 509, -608, 514, -608, 515, 516, 518,
932 893 -608, 2722, -608, 519, 504, -608, -608, -608, 210, -608,
933 893 512, -608, -608, 2508, -608, -608, 2538, -608, 517, -608,
934 -608, -608, 520, -608, -608, 452, 455, -608, -608, 521,
935 7 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
936 7 327, -608, 2508, 1563, 2508, 327, 31, 251, 211, 10,
937
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 523, 535, 536, 546, -608, -608, 549, 550, 551, 554,
938 555, -608, -608, 526, -608, 541, 2508, -608, -608, -608,
939 -608, -608, -608, -608, -608, 2757, -608, 527, -608, -608,
940 1005, -608, -608, -608, 2508, -608, -608, 2508, 219, -608,
941 563, 2415, 327, 2508, 2508, 2508, 2508, 2508, 2508, 1563,
942 486, 1563, 1563, 561, 1563, 2508, 2508, 1689, 1563, 1563,
943 7 700, 559, 571, -608, 568, -608, 580, 576, 2508, 2508,
944 7 222, 2415, -608, -608, -608, -608, -608, 578, -608, 2508,
945 630, 631, 415, 634, 584, 588, -608, 641, -608, 560,
946
2/6
✓ Branch 0 taken 302 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 302 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
302 -608, -608, 2810, 2457, 1689, 1563, 273, 280, 2508, 1563,
947 258, 1563, -608, 1563, 1563, 2184, 594, 94, 1057, 1563,
948 644, 645, 1563, -608, -608, 49, -608, 270, 647, -608,
949 -608, -608, -608, 598, -608, 2508, 1563, -608, -608, -608,
950 602, 251, 605, 617, -608, -608, -608, 1057, 2207, 619,
951 1437, -608, 1563, 1563, -608, -608, 1689, 1563, 1563, 1563,
952 622, -608, -608, -608, -608, 1437, 626, 628, 632, -608,
953 -608, -608, -608, 670, -608, -608, 1563, -608, -608, -608,
954 1563, -608, -608
955 };
956
2/6
✓ Branch 0 taken 38927 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 38927 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
38927
957 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
958 Performed when YYTABLE does not specify something else to do. Zero
959 means the default is an error. */
960 static const yytype_int16 yydefact[] =
961 {
962 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
964 62, 63, 64, 65, 66, 67, 68, 257, 0, 0,
965 274, 3, 8, 0, 0, 6, 7, 4, 0, 0,
966 55, 0, 58, 60, 0, 0, 12, 15, 14, 13,
967 0, 0, 145, 0, 251, 0, 69, 258, 259, 260,
968 261, 273, 0, 105, 0, 43, 274, 59, 0, 0,
969 0, 0, 0, 0, 262, 263, 0, 0, 0, 0,
970 86, 71, 87, 85, 84, 0, 0, 0, 0, 0,
971 0, 17, 18, 19, 9, 57, 72, 74, 76, 88,
972 0, 0, 78, 10, 11, 0, 0, 130, 128, 250,
973 16, 270, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 0, 106, 56, 376, 377, 0, 0, 0, 0,
975 39790 0, 0, 0, 0, 0, 0, 0, 0, 374, 367,
976
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 39790 times.
39790 365, 366, 283, 0, 292, 286, 289, 294, 295, 301,
977 303, 307, 310, 313, 318, 323, 325, 327, 329, 331,
978 333, 335, 337, 352, 354, 0, 284, 375, 368, 369,
979 370, 256, 0, 78, 0, 0, 0, 41, 0, 0,
980 0, 44, 46, 0, 0, 0, 0, 81, 0, 0,
981 39790 77, 90, 0, 0, 89, 100, 0, 0, 144, 264,
982 39790 266, 265, 268, 271, 267, 272, 269, 70, 0, 0,
983 39790 108, 0, 0, 0, 114, 0, 0, 120, 122, 118,
984 0, 115, 116, 0, 113, 0, 0, 69, 0, 0,
985 39820 0, 336, 0, 382, 0, 296, 297, 299, 300, 298,
986
2/6
✓ Branch 0 taken 39820 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39820 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39820 0, 0, 0, 0, 290, 291, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989
1/2
✓ Branch 0 taken 39820 times.
✗ Branch 1 not taken.
39820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 373, 0, 22, 252, 0, 0, 0,
991 23, 29, 0, 27, 0, 28, 0, 0, 0, 0,
992 33, 36, 35, 34, 0, 42, 0, 53, 151, 0,
993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
994 73, 0, 83, 75, 0, 0, 0, 0, 0, 248,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 171,
996 0, 193, 0, 197, 0, 0, 0, 0, 0, 196,
997 158, 0, 159, 160, 161, 215, 216, 162, 224, 225,
998 7 226, 229, 163, 164, 165, 0, 0, 0, 283, 353,
999
2/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7 0, 0, 0, 0, 97, 98, 99, 0, 94, 0,
1000 129, 0, 117, 119, 125, 126, 123, 107, 110, 111,
1001 112, 109, 121, 124, 0, 0, 0, 285, 0, 380,
1002
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 0, 0, 279, 0, 282, 0, 288, 302, 304, 305,
1003 306, 308, 309, 311, 312, 315, 314, 317, 316, 319,
1004 320, 322, 321, 324, 326, 328, 330, 0, 332, 338,
1005 339, 340, 341, 342, 343, 344, 345, 346, 348, 349,
1006 350, 351, 347, 0, 20, 21, 255, 0, 254, 0,
1007 24, 25, 26, 38, 39, 30, 31, 32, 37, 0,
1008 0, 0, 147, 148, 146, 0, 52, 51, 50, 49,
1009 48, 47, 0, 80, 0, 190, 0, 0, 198, 0,
1010 247, 0, 167, 0, 169, 0, 0, 152, 0, 0,
1011 1174414 199, 0, 382, 156, 173, 154, 153, 223, 192, 195,
1012 194, 0, 166, 172, 155, 157, 104, 101, 92, 100,
1013 0, 0, 0, 0, 132, 0, 136, 0, 0, 0,
1014 138, 0, 135, 0, 0, 371, 372, 277, 0, 381,
1015 1174414 0, 283, 287, 0, 280, 293, 0, 253, 0, 54,
1016 149, 150, 0, 82, 91, 186, 188, 175, 174, 0,
1017 474104 178, 179, 180, 181, 182, 183, 184, 185, 191, 176,
1018 474104 273, 177, 0, 0, 0, 274, 0, 0, 0, 0,
1019 474104 0, 0, 0, 0, 168, 170, 0, 0, 0, 0,
1020 0, 228, 96, 103, 95, 100, 0, 141, 142, 139,
1021 137, 131, 134, 133, 140, 0, 278, 0, 281, 334,
1022 0, 45, 187, 189, 0, 236, 237, 0, 0, 227,
1023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 190, 0, 0,
1025 0, 0, 0, 127, 0, 40, 0, 0, 0, 0,
1026 0, 0, 356, 358, 359, 357, 360, 0, 235, 0,
1027 200, 202, 0, 238, 0, 0, 249, 240, 246, 0,
1028 102, 93, 0, 0, 190, 0, 0, 0, 0, 0,
1029 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
1030 242, 244, 0, 143, 379, 0, 218, 0, 221, 364,
1031 363, 362, 361, 0, 234, 0, 0, 232, 201, 203,
1032 0, 354, 0, 0, 355, 214, 204, 0, 0, 0,
1033 206, 239, 0, 0, 241, 378, 190, 0, 0, 0,
1034 0, 233, 213, 211, 212, 205, 0, 0, 0, 208,
1035 243, 245, 217, 219, 222, 231, 0, 210, 207, 209,
1036 47 0, 230, 220
1037 47 };
1038
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47
1039 /* YYPGOTO[NTERM-NUM]. */
1040 static const yytype_int16 yypgoto[] =
1041 {
1042 -608, -608, -608, 405, -232, 18, -608, -282, 45, -608,
1043 -608, -608, -1, 59, 6, -608, 135, -608, 682, 19,
1044 2, -608, -38, -608, -608, -608, -608, 41, -13, -608,
1045 -608, -463, -344, 60, -608, -608, 20, -608, -608, -49,
1046 473, -608, -209, 22, 14, 633, -608, -608, -492, 79,
1047 590, 191, -167, -586, -93, -607, -450, 365, -441, -608,
1048 35, -440, -608, -608, -608, -439, 350, -608, -608, -608,
1049 -501, -433, -431, -608, -424, -407, 21, -33, -143, 193,
1050 -2, -31, -608, 26, -608, 27, 656, -608, -608, 304,
1051 -608, 305, -608, -608, -47, 174, 178, 180, 110, 129,
1052 437, 441, 461, 462, 464, -608, -247, 599, 1124, 362,
1053 -400, -76, 5, -446, -608, -149, -608, -608, -608, 69
1054 };
1055
1056 /* YYDEFGOTO[NTERM-NUM]. */
1057 static const yytype_int16 yydefgoto[] =
1058 {
1059 0, 1, 2, 31, 286, 291, 292, 293, 342, 34,
1060 35, 36, 343, 344, 345, 40, 346, 42, 43, 298,
1061 347, 96, 171, 98, 570, 190, 321, 82, 219, 100,
1062 377, 373, 374, 375, 376, 64, 301, 122, 220, 221,
1063 222, 223, 224, 302, 303, 50, 380, 521, 522, 348,
1064 52, 486, 487, 549, 350, 351, 352, 478, 353, 677,
1065 678, 354, 687, 355, 356, 357, 358, 359, 360, 361,
1066 607, 362, 363, 364, 365, 366, 367, 54, 172, 55,
1067 142, 73, 57, 58, 59, 60, 61, 143, 144, 403,
1068 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1069 155, 156, 157, 158, 159, 160, 161, 162, 163, 369,
1070 370, 165, 703, 704, 166, 167, 168, 169, 170, 234
1071 };
1072
1073 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1074 positive, shift that token. If negative, reduce the rule whose
1075 number is the opposite. If YYTABLE_NINF, syntax error. */
1076 static const yytype_int16 yytable[] =
1077 {
1078 56, 37, 399, 97, 45, 56, 56, 194, 39, 179,
1079 451, 391, 56, 56, 56, 56, 49, 81, 109, 427,
1080 32, 44, 47, 53, 48, 551, 349, 506, 99, 593,
1081 568, 312, 288, 10, 552, 553, 554, 74, 75, 101,
1082 184, 656, 555, 46, 556, 177, 582, 33, 87, 88,
1083 89, 557, 27, 95, 482, 80, 448, 83, 84, 106,
1084 326, 38, 308, 484, 611, 108, 99, 27, 558, 56,
1085 95, 710, 95, 10, 464, 561, 56, 101, 686, 309,
1086 10, 51, 111, 187, 188, 235, 236, 237, 238, 239,
1087 -276, 95, -69, 539, 445, 511, 3, 576, 284, 106,
1088 725, 398, 74, 75, 675, 676, 106, 313, 316, 319,
1089 285, 641, 322, 285, 189, 577, 62, 123, 70, 227,
1090 214, 66, 631, 217, 509, 512, 230, 216, 138, 483,
1091 732, 107, 310, 311, 66, 56, 66, 41, 485, 90,
1092 283, 69, 226, 68, 447, 266, 71, 305, 320, 79,
1093 41, 79, 79, 185, 66, 612, -69, 459, 706, 283,
1094 382, 195, 218, 510, 63, 640, 213, 95, 400, 267,
1095 683, 389, 76, 349, 56, 295, 77, 551, 299, 72,
1096 215, 85, 297, 196, 500, 65, 552, 553, 554, 401,
1097 86, 368, 109, 56, 555, 670, 556, 304, 383, 407,
1098 225, 258, 259, 557, 74, 75, 174, 227, 260, 101,
1099 112, 81, 27, 79, 551, 537, -130, 300, 227, 388,
1100 558, 294, 217, 552, 553, 554, 216, 561, 261, 472,
1101 91, 555, -273, 556, -273, 296, 191, -273, 192, 473,
1102 557, 226, 306, 250, 251, 193, 446, 533, 474, 307,
1103 113, 115, 117, 119, 534, 51, 41, 558, 114, -273,
1104 27, 218, 533, 618, 561, 213, 551, 115, 119, 596,
1105 619, 638, 240, 66, 668, 552, 553, 554, 397, 215,
1106 56, 669, 92, 555, 45, 556, 659, 93, 39, 599,
1107 56, 452, 557, 116, 299, 27, 49, 94, 297, 225,
1108 32, 44, 47, 53, 48, 524, 252, 253, 97, 558,
1109 695, 41, 105, 304, 242, 109, 561, 696, 635, 243,
1110 244, 245, 716, 46, 530, 95, 103, 33, 287, 717,
1111 372, 368, 689, 300, 121, 690, 56, 294, 368, 691,
1112 81, 38, 692, 104, 41, 254, 255, 256, 257, 368,
1113 499, 296, 110, 124, 125, 41, 613, 614, 615, 616,
1114 617, 51, 126, 127, 415, 416, 417, 418, 118, 56,
1115 27, 51, 107, 538, 247, 248, 249, 56, 516, 460,
1116 461, 519, 550, 605, 606, 518, 633, 419, 420, 421,
1117 422, 87, 88, 89, 27, 175, 543, 130, 176, 531,
1118 523, 27, 131, 19, 20, 21, 22, 23, 24, 25,
1119 26, 178, 578, 180, 27, 580, 183, 41, 181, 137,
1120 520, 408, 409, 410, 515, 675, 676, 41, 411, 412,
1121 182, 164, 413, 414, 186, 197, 28, 207, 517, 228,
1122 246, 229, 262, -276, 241, -275, 283, 164, 264, 263,
1123 282, 379, 265, 715, 324, 381, 90, 384, 225, 7,
1124 385, 386, 658, 66, 138, 392, 393, 139, 140, 141,
1125 395, 394, 396, 368, 368, 368, 397, 548, 338, 449,
1126 406, 547, 453, 66, 19, 20, 21, 22, 23, 24,
1127 25, 26, 232, 233, 462, 27, 559, 138, 454, 368,
1128 455, 456, 457, 458, 463, 465, 372, 56, 475, 476,
1129 632, 349, 477, 466, 41, 467, 468, 469, 479, 56,
1130 592, 470, 471, 519, 481, 488, 489, 518, 491, 493,
1131 494, 495, 496, 501, 550, 502, 503, 504, 505, 508,
1132 349, 535, 523, 500, 525, 164, 164, 164, 526, 536,
1133 164, 323, 542, 540, 541, 544, 574, 575, 500, -353,
1134 7, 368, 520, 595, 66, 585, 515, 586, 587, 588,
1135 589, 550, 590, 594, 597, 604, 600, 649, 630, 601,
1136 517, 602, 621, 56, 603, 19, 20, 21, 22, 23,
1137 24, 25, 26, 56, 622, 623, 27, 217, 56, 702,
1138 225, 216, 299, 404, 405, 624, 297, 625, 626, 634,
1139 627, 566, 569, 628, 629, 639, 226, 368, 661, 368,
1140 368, 304, 368, 550, 652, 368, 368, 368, 56, 548,
1141 662, 663, 727, 547, 664, 665, 218, 671, 673, 674,
1142 213, 300, 679, 680, 372, 294, 371, 681, 559, 682,
1143 705, 510, 712, 713, 215, 718, 41, 719, 722, 296,
1144 56, 723, 368, 368, 519, 66, 548, 368, 518, 368,
1145 547, 368, 368, 724, 225, 729, 368, 368, 740, 51,
1146 368, 736, 737, 523, 738, 559, 164, 444, 739, 67,
1147 660, 480, 581, 390, 368, 120, 198, 102, 497, 423,
1148 528, 490, 492, 520, 424, 368, 532, 515, 368, 499,
1149 368, 368, 707, 728, 368, 368, 368, 368, 548, 7,
1150 372, 517, 547, 368, 499, 425, 173, 426, 231, 0,
1151 41, 428, 685, 0, 368, 41, 0, 559, 368, 0,
1152 0, 225, 0, 164, 19, 20, 21, 22, 23, 24,
1153 25, 26, 0, 0, 609, 27, 0, 0, 404, 0,
1154 529, 0, 164, 7, 0, 372, 0, 0, 199, 200,
1155 201, 202, 203, 204, 205, 206, 0, 0, 0, 0,
1156 0, 14, 78, 16, 17, 0, 0, 0, 19, 20,
1157 21, 22, 23, 24, 25, 26, 0, 41, 0, 27,
1158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159 648, 164, 650, 651, 0, 653, 0, 0, 0, 657,
1160 0, 0, 0, 0, 66, 0, 0, 0, 0, 0,
1161 0, 173, 0, 0, 164, 0, 0, 0, 567, 571,
1162 0, 572, 173, 573, 0, 0, 0, 0, 0, 0,
1163 164, 579, 378, 164, 0, 0, 688, 0, 0, 0,
1164 694, 0, 697, 0, 698, 699, 0, 0, 66, 0,
1165 711, 0, 583, 714, 268, 269, 270, 271, 272, 273,
1166 274, 275, 276, 277, 278, 279, 280, 721, 0, 0,
1167 0, 0, 0, 0, 0, 598, 281, 0, 0, 0,
1168 0, 0, 314, 730, 731, 124, 125, 0, 733, 734,
1169 735, 0, 0, 0, 126, 127, 0, 0, 0, 0,
1170 0, 0, 0, 0, 608, 0, 610, 741, 0, 0,
1171 0, 742, 128, 129, 0, 0, 0, 0, 0, 0,
1172 173, 0, 0, 173, 0, 0, 27, 0, 164, 130,
1173 0, 0, 0, 0, 131, 0, 0, 0, 132, 133,
1174 134, 135, 0, 0, 0, 0, 636, 136, 0, 637,
1175 0, 137, 0, 567, 0, 642, 643, 644, 645, 646,
1176 647, 0, 0, 0, 0, 0, 0, 654, 655, 0,
1177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178 666, 667, 173, 567, 0, 0, 0, 0, 4, 5,
1179 0, 672, 0, 0, 315, 66, 138, 0, 0, 139,
1180 140, 141, 0, 0, 7, 233, 8, 289, 507, 0,
1181 693, 10, 11, 12, 0, 0, 0, 701, 0, 0,
1182 0, 0, 14, 15, 16, 17, 0, 0, 18, 19,
1183 20, 21, 22, 23, 24, 25, 26, 720, 0, 0,
1184 27, 0, 325, 326, 327, 0, 328, 708, 709, 329,
1185 701, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1186 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1187 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1188 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1189 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1190 340, 0, 28, 0, 132, 133, 134, 135, 0, 30,
1191 0, 560, 7, 136, 0, 0, 0, 137, 0, 0,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1193 14, 15, 16, 17, 0, 0, 0, 19, 20, 21,
1194 22, 23, 24, 25, 26, 0, 0, 584, 27, 0,
1195 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1196 0, 66, 138, 0, 0, 139, 140, 141, 0, 0,
1197 325, 326, 327, 0, 328, 0, 0, 329, 0, 124,
1198 125, 330, 331, 332, 7, 333, 8, 334, 126, 127,
1199 0, 10, 0, 12, 0, 0, 0, 0, 0, 335,
1200 336, 337, 0, 338, 0, 620, 128, 129, 18, 19,
1201 20, 21, 22, 23, 24, 25, 26, 66, 0, 339,
1202 27, 0, 0, 130, 0, 0, 0, 0, 340, 341,
1203 0, 0, 132, 133, 134, 135, 0, 0, 7, 0,
1204 0, 136, 0, 0, 0, 137, 0, 0, 0, 0,
1205 0, 0, 0, 0, 0, 0, 14, 209, 16, 17,
1206 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
1207 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1208 0, 0, 28, 0, 0, 212, 0, 0, 0, 66,
1209 138, 0, 0, 139, 140, 141, 325, 326, 327, 0,
1210 328, 0, 0, 329, 0, 124, 125, 330, 331, 332,
1211 7, 333, 8, 334, 126, 127, 0, 10, 0, 12,
1212 0, 0, 0, 0, 0, 335, 336, 337, 0, 338,
1213 0, 0, 128, 129, 18, 19, 20, 21, 22, 23,
1214 24, 25, 26, 66, 0, 339, 27, 0, 0, 130,
1215 0, 0, 0, 0, 340, 498, 0, 0, 132, 133,
1216 134, 135, 0, 0, 0, 0, 0, 136, 0, 0,
1217 0, 137, 429, 430, 431, 432, 433, 434, 435, 436,
1218 437, 438, 439, 440, 441, 442, 0, 0, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
1221 0, 212, 0, 0, 0, 66, 138, 0, 0, 139,
1222 140, 141, 325, 326, 327, 0, 328, 0, 0, 329,
1223 0, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1224 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1225 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1226 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1227 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1228 340, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1229 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1234 0, 66, 138, 0, 0, 139, 140, 141, 325, 326,
1235 327, 0, 328, 0, 0, 329, 0, 124, 125, 330,
1236 331, 332, 7, 333, 8, 334, 126, 127, 0, 10,
1237 0, 12, 0, 0, 0, 0, 0, 335, 336, 337,
1238 0, 338, 0, 0, 128, 129, 18, 19, 20, 21,
1239 22, 23, 24, 25, 26, 0, 0, 339, 27, 0,
1240 0, 130, 0, 0, 0, 0, 340, 0, 0, 0,
1241 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1242 0, 0, 0, 137, 0, 7, 0, 8, 513, 0,
1243 0, 0, 10, 0, 12, 0, 0, 0, 0, 0,
1244 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1245 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1246 28, 27, 0, 0, 0, 0, 0, 66, 138, 0,
1247 514, 139, 140, 141, 325, 326, 327, 0, 328, 0,
1248 0, 329, 0, 124, 125, 330, 545, 546, 7, 333,
1249 8, 334, 126, 127, 0, 10, 0, 0, 0, 0,
1250 0, 0, 0, 335, 336, 0, 0, 338, 0, 0,
1251 128, 129, 0, 19, 20, 21, 22, 23, 24, 25,
1252 26, 0, 0, 28, 27, 0, 212, 130, 0, 0,
1253 66, 0, 340, 0, 0, 0, 132, 133, 134, 135,
1254 0, 0, 0, 0, 0, 136, 0, 0, 0, 137,
1255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
1257 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
1258 0, 0, 7, 0, 8, 9, 28, 0, 0, 10,
1259 11, 12, 13, 66, 138, 0, 0, 139, 140, 141,
1260 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1261 22, 23, 24, 25, 26, 4, 5, 0, 27, 0,
1262 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
1263 0, 7, 0, 8, 9, 0, 0, 0, 10, 11,
1264 12, 13, 0, 0, 0, 0, 0, 0, 0, 14,
1265 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1266 23, 24, 25, 26, 0, 0, 0, 27, 0, 0,
1267 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
1268 28, 0, 0, 29, 0, 0, 7, 30, 8, 289,
1269 0, 0, 0, 10, 11, 12, 0, 0, 0, 0,
1270 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1271 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1272 5, 0, 27, 0, 0, 0, 0, 0, 0, 28,
1273 0, 290, 443, 0, 0, 7, 30, 8, 289, 0,
1274 3523 0, 0, 10, 11, 12, 317, 0, 0, 124, 125,
1275 3523 0, 0, 0, 14, 15, 16, 17, 126, 127, 18,
1276 3523 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1277 3523 0, 27, 0, 0, 0, 128, 129, 0, 0, 0,
1278 3523 450, 0, 0, 0, 28, 0, 0, 212, 0, 27,
1279 3523 0, 30, 130, 0, 0, 0, 0, 131, 0, 0,
1280 3523 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1281 3523 136, 0, 0, 0, 137, 0, 0, 0, 0, 0,
1282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1283 0, 0, 0, 28, 0, 0, 212, 0, 124, 125,
1284 30, 0, 0, 7, 0, 0, 0, 126, 127, 0,
1285 0, 0, 0, 0, 0, 0, 0, 318, 66, 138,
1286 0, 0, 139, 140, 141, 128, 129, 0, 19, 20,
1287 6126 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1288
3/8
✓ Branch 0 taken 6126 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6126 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 6126 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6126 0, 0, 562, 563, 0, 564, 0, 131, 0, 0,
1289 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1290 136, 0, 124, 125, 137, 0, 0, 7, 0, 0,
1291 0, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1292 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
1293 3522 129, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1294
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 0, 0, 0, 27, 0, 0, 130, 0, 565, 138,
1295 0, 131, 139, 140, 141, 132, 133, 134, 135, 0,
1296 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 124, 125,
1298 0, 0, 0, 0, 0, 0, 0, 126, 127, 0,
1299 997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 997 0, 124, 125, 0, 0, 128, 129, 0, 0, 0,
1301 997 126, 127, 66, 138, 0, 0, 139, 140, 141, 27,
1302 997 0, 0, 562, 0, 0, 564, 0, 131, 128, 129,
1303 997 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1304 136, 0, 27, 0, 137, 562, 0, 0, 564, 0,
1305 131, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1306 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1307 0, 0, 0, 0, 0, 0, 0, 124, 125, 0,
1308 0, 0, 0, 0, 0, 0, 126, 127, 66, 138,
1309 700, 0, 139, 140, 141, 0, 0, 124, 125, 0,
1310 0, 0, 0, 0, 128, 129, 126, 127, 0, 0,
1311 0, 66, 138, 726, 0, 139, 140, 141, 27, 0,
1312 0, 130, 402, 0, 128, 129, 131, 0, 0, 0,
1313 132, 133, 134, 135, 0, 0, 0, 0, 27, 136,
1314 0, 130, 527, 137, 0, 0, 131, 0, 0, 0,
1315
2/6
✓ Branch 0 taken 3523 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3523 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3523 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1316 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 124, 125, 0, 0, 0, 0, 0,
1318 0, 0, 126, 127, 0, 0, 0, 66, 138, 0,
1319 0, 139, 140, 141, 0, 0, 0, 0, 0, 0,
1320 128, 129, 0, 0, 0, 0, 0, 66, 138, 124,
1321 125, 139, 140, 141, 27, 0, 0, 130, 126, 127,
1322 0, 0, 131, 445, 0, 0, 132, 133, 134, 135,
1323 0, 0, 0, 0, 0, 136, 128, 129, 0, 137,
1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 27, 124, 125, 562, 0, 0, 564, 0, 131, 0,
1326 126, 127, 132, 133, 134, 135, 0, 0, 0, 0,
1327 86 0, 136, 0, 0, 0, 137, 0, 0, 128, 129,
1328 4421 0, 0, 0, 66, 138, 0, 0, 139, 140, 141,
1329 0, 0, 27, 0, 0, 130, 0, 0, 0, 0,
1330 4 131, 684, 124, 125, 132, 133, 134, 135, 0, 0,
1331 7 0, 126, 127, 136, 0, 0, 0, 137, 0, 66,
1332 2 138, 0, 0, 139, 140, 141, 0, 0, 0, 128,
1333 129, 0, 124, 125, 0, 0, 0, 0, 0, 0,
1334 0, 126, 127, 27, 0, 0, 130, 0, 0, 0,
1335 0, 131, 0, 0, 0, 132, 133, 134, 135, 128,
1336 0, 66, 138, 0, 136, 139, 140, 141, 137, 0,
1337 0, 0, 0, 27, 0, 0, 130, 0, 0, 0,
1338 0, 131, 0, 0, 0, 132, 133, 134, 135, 0,
1339 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1341 0, 0, 66, 138, 0, 0, 139, 140, 141, 0,
1342 204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1343 204 0, 7, 0, 8, 208, 0, 0, 0, 10, 0,
1344
2/2
✓ Branch 0 taken 61 times.
✓ Branch 1 taken 143 times.
204 12, 0, 66, 138, 0, 0, 139, 140, 141, 14,
1345 143 209, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1346 204 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1347 0, 0, 0, 10, 0, 12, 210, 0, 0, 0,
1348
2/6
✓ Branch 0 taken 20815 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20815 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
20815 0, 0, 211, 0, 14, 209, 16, 17, 0, 0,
1349 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1350 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1351 0, 387, 0, 0, 0, 0, 0, 211, 0, 0,
1352 0, 7, 0, 8, 513, 0, 0, 0, 10, 28,
1353 12, 0, 212, 0, 0, 0, 66, 0, 0, 14,
1354 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1355 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1356 21016 0, 0, 0, 10, 28, 12, 591, 212, 0, 0,
1357 21016 0, 66, 0, 0, 14, 15, 16, 17, 0, 0,
1358
2/6
✓ Branch 0 taken 21016 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21016 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
21016 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1359 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
1361 0, 8, 513, 0, 0, 0, 10, 0, 12, 28,
1362 3 0, 0, 212, 0, 0, 0, 66, 14, 15, 16,
1363 3 17, 0, 0, 18, 19, 20, 21, 22, 23, 24,
1364
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 25, 26, 0, 0, 0, 27, 0, 0, 0, 0,
1365 0, 0, 0, 0, 28, 0, 0, 0, 0, 0,
1366 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
1371 0, 0, 0, 0, 66
1372 };
1373
1374 static const yytype_int16 yycheck[] =
1375 {
1376 2, 2, 234, 41, 2, 7, 8, 100, 2, 85,
1377 292, 220, 14, 15, 16, 17, 2, 15, 51, 266,
1378 2, 2, 2, 2, 2, 475, 193, 371, 41, 521,
1379 476, 180, 175, 26, 475, 475, 475, 11, 11, 41,
1380 11, 627, 475, 2, 475, 76, 509, 2, 31, 32,
1381 33, 475, 55, 60, 54, 14, 288, 16, 17, 52,
1382 6, 2, 59, 54, 565, 51, 79, 55, 475, 71,
1383 60, 678, 60, 26, 59, 475, 78, 79, 664, 76,
1384 26, 2, 55, 60, 61, 132, 133, 134, 135, 136,
1385 58, 60, 60, 59, 64, 52, 0, 16, 52, 52,
1386 707, 52, 76, 76, 10, 11, 52, 183, 184, 185,
1387 64, 612, 188, 64, 91, 34, 21, 124, 63, 121,
1388 121, 124, 585, 121, 52, 82, 128, 121, 125, 129,
1389 716, 124, 129, 130, 124, 137, 124, 2, 129, 122,
1390 125, 58, 121, 8, 287, 65, 91, 178, 186, 14,
1391 15, 16, 17, 124, 124, 124, 124, 306, 64, 125,
1392 209, 58, 121, 91, 124, 611, 121, 60, 61, 89,
1393 662, 220, 27, 340, 176, 176, 28, 627, 176, 124,
1394 121, 58, 176, 80, 351, 127, 627, 627, 627, 82,
1395 124, 193, 225, 195, 627, 641, 627, 176, 211, 246,
1396 121, 83, 84, 627, 178, 178, 71, 209, 90, 211,
1397 53, 209, 55, 78, 664, 447, 3, 176, 220, 220,
1398 627, 176, 220, 664, 664, 664, 220, 627, 110, 52,
1399 1145496 54, 664, 53, 664, 55, 176, 54, 58, 56, 62,
1400
3/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1145496 times.
✓ Branch 2 taken 399206 times.
✓ Branch 3 taken 746290 times.
1145496 664, 220, 52, 75, 76, 63, 284, 52, 324, 59,
1401 57, 58, 59, 60, 59, 176, 121, 664, 53, 80,
1402 399206 55, 220, 52, 52, 664, 220, 716, 74, 75, 59,
1403 399206 59, 52, 137, 124, 52, 716, 716, 716, 59, 220,
1404 282, 59, 54, 716, 282, 716, 630, 54, 282, 536,
1405 292, 292, 716, 53, 292, 55, 282, 54, 292, 220,
1406
2/6
✓ Branch 0 taken 746290 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 746290 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
746290 282, 282, 282, 282, 282, 381, 77, 78, 346, 716,
1407 52, 176, 3, 292, 61, 348, 716, 59, 600, 66,
1408 67, 68, 52, 282, 400, 60, 54, 282, 63, 59,
1409 195, 333, 59, 292, 63, 62, 338, 292, 340, 59,
1410 338, 282, 62, 54, 209, 79, 80, 81, 82, 351,
1411 351, 292, 54, 14, 15, 220, 105, 106, 107, 108,
1412 109, 282, 23, 24, 254, 255, 256, 257, 53, 371,
1413 55, 292, 124, 449, 72, 73, 74, 379, 379, 129,
1414 130, 379, 475, 56, 57, 379, 595, 258, 259, 260,
1415 458656 261, 31, 32, 33, 55, 63, 472, 58, 63, 401,
1416 379, 55, 63, 44, 45, 46, 47, 48, 49, 50,
1417 833 51, 27, 488, 58, 55, 491, 58, 282, 127, 80,
1418 379, 247, 248, 249, 379, 10, 11, 292, 250, 251,
1419 127, 69, 252, 253, 52, 124, 117, 124, 379, 58,
1420 1421245 71, 58, 85, 58, 58, 58, 125, 85, 87, 86,
1421 447521 59, 63, 88, 685, 11, 58, 122, 54, 379, 19,
1422 766462 54, 54, 629, 124, 125, 54, 54, 128, 129, 130,
1423 41702 127, 124, 58, 475, 476, 477, 59, 475, 38, 58,
1424 153082 124, 475, 54, 124, 44, 45, 46, 47, 48, 49,
1425 1 50, 51, 130, 131, 59, 55, 475, 125, 54, 501,
1426 6446 54, 54, 54, 54, 59, 52, 371, 509, 58, 58,
1427 598 586, 678, 58, 121, 379, 121, 121, 121, 58, 521,
1428 521, 121, 121, 521, 58, 58, 58, 521, 58, 54,
1429 1143045 54, 54, 54, 8, 627, 54, 54, 54, 54, 59,
1430
2/6
✓ Branch 0 taken 100325 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100325 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
100325 707, 62, 521, 710, 59, 183, 184, 185, 59, 56,
1431 188, 189, 127, 59, 59, 54, 54, 54, 725, 54,
1432 1 19, 563, 521, 59, 124, 58, 521, 58, 54, 54,
1433
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 54, 664, 54, 54, 62, 54, 59, 91, 52, 59,
1434 521, 129, 59, 585, 129, 44, 45, 46, 47, 48,
1435 49, 50, 51, 595, 59, 59, 55, 595, 600, 675,
1436
2/6
✓ Branch 0 taken 22297 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22297 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
22297 521, 595, 600, 241, 242, 59, 600, 58, 58, 82,
1437 59, 476, 477, 59, 59, 52, 595, 619, 59, 621,
1438 622, 600, 624, 716, 63, 627, 628, 629, 630, 627,
1439 59, 63, 708, 627, 54, 59, 595, 59, 8, 8,
1440 595, 600, 8, 59, 509, 600, 105, 59, 627, 8,
1441 56, 91, 8, 8, 595, 8, 521, 59, 56, 600,
1442
2/6
✓ Branch 0 taken 8207 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8207 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8207 662, 56, 664, 665, 662, 124, 664, 669, 662, 671,
1443 664, 673, 674, 56, 595, 56, 678, 679, 8, 600,
1444 682, 59, 56, 662, 56, 664, 324, 282, 56, 7,
1445 630, 329, 501, 220, 696, 62, 106, 41, 348, 262,
1446 396, 336, 340, 662, 263, 707, 401, 662, 710, 710,
1447 712, 713, 677, 708, 716, 717, 718, 719, 716, 19,
1448 585, 662, 716, 725, 725, 264, 70, 265, 129, -1,
1449 133698 595, 267, 663, -1, 736, 600, -1, 716, 740, -1,
1450 -1, 662, -1, 381, 44, 45, 46, 47, 48, 49,
1451 50, 51, -1, -1, 563, 55, -1, -1, 396, -1,
1452 398, -1, 400, 19, -1, 630, -1, -1, 112, 113,
1453 164590 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
1454 -1, 37, 38, 39, 40, -1, -1, -1, 44, 45,
1455 46, 47, 48, 49, 50, 51, -1, 662, -1, 55,
1456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1457 619, 449, 621, 622, -1, 624, -1, -1, -1, 628,
1458 -1, -1, -1, -1, 124, -1, -1, -1, -1, -1,
1459 -1, 175, -1, -1, 472, -1, -1, -1, 476, 477,
1460 -1, 479, 186, 481, -1, -1, -1, -1, -1, -1,
1461 488, 489, 196, 491, -1, -1, 665, -1, -1, -1,
1462 669, -1, 671, -1, 673, 674, -1, -1, 124, -1,
1463 679, -1, 510, 682, 91, 92, 93, 94, 95, 96,
1464 97, 98, 99, 100, 101, 102, 103, 696, -1, -1,
1465 -1, -1, -1, -1, -1, 533, 113, -1, -1, -1,
1466 -1, -1, 11, 712, 713, 14, 15, -1, 717, 718,
1467 719, -1, -1, -1, 23, 24, -1, -1, -1, -1,
1468 -1, -1, -1, -1, 562, -1, 564, 736, -1, -1,
1469 -1, 740, 41, 42, -1, -1, -1, -1, -1, -1,
1470 284, -1, -1, 287, -1, -1, 55, -1, 586, 58,
1471 -1, -1, -1, -1, 63, -1, -1, -1, 67, 68,
1472 69, 70, -1, -1, -1, -1, 604, 76, -1, 607,
1473 -1, 80, -1, 611, -1, 613, 614, 615, 616, 617,
1474
2/6
✓ Branch 0 taken 7846 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7846 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7846 618, -1, -1, -1, -1, -1, -1, 625, 626, -1,
1475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1476 638, 639, 346, 641, -1, -1, -1, -1, 3, 4,
1477 -1, 649, -1, -1, 123, 124, 125, -1, -1, 128,
1478 129, 130, -1, -1, 19, 663, 21, 22, 372, -1,
1479 1166383 668, 26, 27, 28, -1, -1, -1, 675, -1, -1,
1480
2/6
✓ Branch 0 taken 210 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 210 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
210 -1, -1, 37, 38, 39, 40, -1, -1, 43, 44,
1481 45, 46, 47, 48, 49, 50, 51, 695, -1, -1,
1482 55, -1, 5, 6, 7, -1, 9, 10, 11, 12,
1483 708, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1484 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1485 1869988 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1486 1869988 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1487 1869988 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1488 1869988 63, -1, 117, -1, 67, 68, 69, 70, -1, 124,
1489 -1, 475, 19, 76, -1, -1, -1, 80, -1, -1,
1490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1491 37, 38, 39, 40, -1, -1, -1, 44, 45, 46,
1492 47, 48, 49, 50, 51, -1, -1, 511, 55, -1,
1493 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1494 -1, 124, 125, -1, -1, 128, 129, 130, -1, -1,
1495 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1496 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1497 1554937 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1498
2/6
✓ Branch 0 taken 1554937 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1554937 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1554937 35, 36, -1, 38, -1, 569, 41, 42, 43, 44,
1499 45, 46, 47, 48, 49, 50, 51, 124, -1, 54,
1500 55, -1, -1, 58, -1, -1, -1, -1, 63, 64,
1501 -1, -1, 67, 68, 69, 70, -1, -1, 19, -1,
1502 6643 -1, 76, -1, -1, -1, 80, -1, -1, -1, -1,
1503
2/6
✓ Branch 0 taken 6643 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6643 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6643 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1504 -1, -1, -1, 44, 45, 46, 47, 48, 49, 50,
1505 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1506 -1, -1, 117, -1, -1, 120, -1, -1, -1, 124,
1507 125, -1, -1, 128, 129, 130, 5, 6, 7, -1,
1508 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1509 718696 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1510 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1511 47766 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1512 47766 49, 50, 51, 124, -1, 54, 55, -1, -1, 58,
1513 47766 -1, -1, -1, -1, 63, 64, -1, -1, 67, 68,
1514 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1515 -1, 80, 268, 269, 270, 271, 272, 273, 274, 275,
1516 276, 277, 278, 279, 280, 281, -1, -1, -1, -1,
1517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1518 -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
1519 17 -1, 120, -1, -1, -1, 124, 125, -1, -1, 128,
1520 17 129, 130, 5, 6, 7, -1, 9, -1, -1, 12,
1521
2/6
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1522 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1523 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1524 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1525 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1526 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1527 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1528 547541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1529 547541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1530
2/6
✓ Branch 0 taken 547541 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 547541 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
547541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1531 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1532 218904 -1, 124, 125, -1, -1, 128, 129, 130, 5, 6,
1533 218904 7, -1, 9, -1, -1, 12, -1, 14, 15, 16,
1534 218904 17, 18, 19, 20, 21, 22, 23, 24, -1, 26,
1535
2/6
✓ Branch 0 taken 218904 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 218904 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
218904 -1, 28, -1, -1, -1, -1, -1, 34, 35, 36,
1536 -1, 38, -1, -1, 41, 42, 43, 44, 45, 46,
1537 47, 48, 49, 50, 51, -1, -1, 54, 55, -1,
1538 -1, 58, -1, -1, -1, -1, 63, -1, -1, -1,
1539 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1540 41702 -1, -1, -1, 80, -1, 19, -1, 21, 22, -1,
1541 41702 -1, -1, 26, -1, 28, -1, -1, -1, -1, -1,
1542 41702 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1543 41702 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1544 117, 55, -1, -1, -1, -1, -1, 124, 125, -1,
1545 64, 128, 129, 130, 5, 6, 7, -1, 9, -1,
1546 -1, 12, -1, 14, 15, 16, 17, 18, 19, 20,
1547 353447 21, 22, 23, 24, -1, 26, -1, -1, -1, -1,
1548 353447 -1, -1, -1, 34, 35, -1, -1, 38, -1, -1,
1549 353447 41, 42, -1, 44, 45, 46, 47, 48, 49, 50,
1550 353447 51, -1, -1, 117, 55, -1, 120, 58, -1, -1,
1551 353447 124, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1552 353447 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554
2/6
✓ Branch 0 taken 41702 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41702 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41702 -1, -1, -1, -1, -1, -1, 3, 4, -1, -1,
1555 -1, -1, -1, -1, -1, -1, 13, -1, -1, -1,
1556 -1, -1, 19, -1, 21, 22, 117, -1, -1, 26,
1557 27, 28, 29, 124, 125, -1, -1, 128, 129, 130,
1558 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1559 47, 48, 49, 50, 51, 3, 4, -1, 55, -1,
1560 -1, -1, -1, -1, -1, 13, -1, -1, -1, -1,
1561 -1, 19, -1, 21, 22, -1, -1, -1, 26, 27,
1562 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
1563 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1564 21905 48, 49, 50, 51, -1, -1, -1, 55, -1, -1,
1565 21905 3, 4, -1, -1, -1, -1, -1, -1, -1, -1,
1566 21905 117, -1, -1, 120, -1, -1, 19, 124, 21, 22,
1567 21905 -1, -1, -1, 26, 27, 28, -1, -1, -1, -1,
1568 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1569 1661 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1570 1661 4, -1, 55, -1, -1, -1, -1, -1, -1, 117,
1571 1661 -1, 64, 120, -1, -1, 19, 124, 21, 22, -1,
1572 -1, -1, 26, 27, 28, 11, -1, -1, 14, 15,
1573 834 -1, -1, -1, 37, 38, 39, 40, 23, 24, 43,
1574 834 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1575 834 -1, 55, -1, -1, -1, 41, 42, -1, -1, -1,
1576 834 64, -1, -1, -1, 117, -1, -1, 120, -1, 55,
1577 -1, 124, 58, -1, -1, -1, -1, 63, -1, -1,
1578 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1579 76, -1, -1, -1, 80, -1, -1, -1, -1, -1,
1580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1581 -1, -1, -1, 117, -1, -1, 120, -1, 14, 15,
1582 124, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1583 -1, -1, -1, -1, -1, -1, -1, 123, 124, 125,
1584 -1, -1, 128, 129, 130, 41, 42, -1, 44, 45,
1585
2/6
✓ Branch 0 taken 363535 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 363535 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
363535 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1586 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1587 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1588 76, -1, 14, 15, 80, -1, -1, 19, -1, -1,
1589 -1, 23, 24, -1, -1, -1, -1, -1, -1, -1,
1590
2/6
✓ Branch 0 taken 1658 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1658 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1658 -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
1591 42, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1592 -1, -1, -1, 55, -1, -1, 58, -1, 124, 125,
1593 -1, 63, 128, 129, 130, 67, 68, 69, 70, -1,
1594 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1595 -1, -1, -1, -1, -1, -1, -1, -1, 14, 15,
1596 -1, -1, -1, -1, -1, -1, -1, 23, 24, -1,
1597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1598 -1, 14, 15, -1, -1, 41, 42, -1, -1, -1,
1599 23, 24, 124, 125, -1, -1, 128, 129, 130, 55,
1600 -1, -1, 58, -1, -1, 61, -1, 63, 41, 42,
1601 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1602
2/6
✓ Branch 0 taken 29956 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 29956 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
29956 76, -1, 55, -1, 80, 58, -1, -1, 61, -1,
1603 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1604 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1605 -1, -1, -1, -1, -1, -1, -1, 14, 15, -1,
1606 -1, -1, -1, -1, -1, -1, 23, 24, 124, 125,
1607 126, -1, 128, 129, 130, -1, -1, 14, 15, -1,
1608 153064 -1, -1, -1, -1, 41, 42, 23, 24, -1, -1,
1609 18 -1, 124, 125, 126, -1, 128, 129, 130, 55, -1,
1610 -1, 58, 59, -1, 41, 42, 63, -1, -1, -1,
1611 67, 68, 69, 70, -1, -1, -1, -1, 55, 76,
1612 -1, 58, 59, 80, -1, -1, 63, -1, -1, -1,
1613 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1614 -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1615 -1, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1616 -1, -1, 23, 24, -1, -1, -1, 124, 125, -1,
1617 -1, 128, 129, 130, -1, -1, -1, -1, -1, -1,
1618 41, 42, -1, -1, -1, -1, -1, 124, 125, 14,
1619
1/2
✓ Branch 0 taken 153067 times.
✗ Branch 1 not taken.
153067 15, 128, 129, 130, 55, -1, -1, 58, 23, 24,
1620 -1, -1, 63, 64, -1, -1, 67, 68, 69, 70,
1621 -1, -1, -1, -1, -1, 76, 41, 42, -1, 80,
1622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1623 55, 14, 15, 58, -1, -1, 61, -1, 63, -1,
1624 23, 24, 67, 68, 69, 70, -1, -1, -1, -1,
1625 -1, 76, -1, -1, -1, 80, -1, -1, 41, 42,
1626 -1, -1, -1, 124, 125, -1, -1, 128, 129, 130,
1627 -1, -1, 55, -1, -1, 58, -1, -1, -1, -1,
1628 63, 64, 14, 15, 67, 68, 69, 70, -1, -1,
1629 -1, 23, 24, 76, -1, -1, -1, 80, -1, 124,
1630 125, -1, -1, 128, 129, 130, -1, -1, -1, 41,
1631 42, -1, 14, 15, -1, -1, -1, -1, -1, -1,
1632 153063 -1, 23, 24, 55, -1, -1, 58, -1, -1, -1,
1633 153063 -1, 63, -1, -1, -1, 67, 68, 69, 70, 41,
1634 153063 -1, 124, 125, -1, 76, 128, 129, 130, 80, -1,
1635 153063 -1, -1, -1, 55, -1, -1, 58, -1, -1, -1,
1636
2/6
✓ Branch 0 taken 153063 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 153063 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
153063 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1637 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1639 -1, -1, 124, 125, -1, -1, 128, 129, 130, -1,
1640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1641 -1, 19, -1, 21, 22, -1, -1, -1, 26, -1,
1642 28, -1, 124, 125, -1, -1, 128, 129, 130, 37,
1643 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1644 1 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1645 1 -1, -1, -1, 26, -1, 28, 64, -1, -1, -1,
1646 1 -1, -1, 70, -1, 37, 38, 39, 40, -1, -1,
1647 1 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1648 1 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1649
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 -1, 64, -1, -1, -1, -1, -1, 70, -1, -1,
1650 -1, 19, -1, 21, 22, -1, -1, -1, 26, 117,
1651 28, -1, 120, -1, -1, -1, 124, -1, -1, 37,
1652 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1653 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1654 -1, -1, -1, 26, 117, 28, 64, 120, -1, -1,
1655 -1, 124, -1, -1, 37, 38, 39, 40, -1, -1,
1656 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1657 18 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1658 18 -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
1659 18 -1, 21, 22, -1, -1, -1, 26, -1, 28, 117,
1660 -1, -1, 120, -1, -1, -1, 124, 37, 38, 39,
1661
2/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
18 40, -1, -1, 43, 44, 45, 46, 47, 48, 49,
1662 50, 51, -1, -1, -1, 55, -1, -1, -1, -1,
1663 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
1664 -1, 124, -1, -1, -1, -1, -1, -1, -1, -1,
1665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1668 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
1669 -1, -1, -1, -1, 124
1670 };
1671
1672 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1673 state STATE-NUM. */
1674 static const yytype_uint8 yystos[] =
1675 {
1676 0, 132, 133, 0, 3, 4, 13, 19, 21, 22,
1677 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1678 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1679 124, 134, 136, 139, 140, 141, 142, 143, 144, 145,
1680 146, 147, 148, 149, 150, 151, 158, 167, 174, 175,
1681 176, 180, 181, 207, 208, 210, 211, 213, 214, 215,
1682 216, 217, 21, 124, 166, 127, 124, 149, 147, 58,
1683 63, 91, 124, 212, 214, 216, 27, 28, 38, 147,
1684 158, 151, 158, 158, 158, 58, 124, 31, 32, 33,
1685 122, 54, 54, 54, 54, 60, 152, 153, 154, 159,
1686 160, 211, 217, 54, 54, 3, 52, 124, 175, 208,
1687 54, 216, 53, 210, 53, 210, 53, 210, 53, 210,
1688 176, 63, 168, 124, 14, 15, 23, 24, 41, 42,
1689 58, 63, 67, 68, 69, 70, 76, 80, 125, 128,
1690 129, 130, 211, 218, 219, 221, 222, 223, 224, 225,
1691 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1692 236, 237, 238, 239, 240, 242, 245, 246, 247, 248,
1693 249, 153, 209, 217, 147, 63, 63, 212, 27, 242,
1694 58, 127, 127, 58, 11, 124, 52, 60, 61, 91,
1695 156, 54, 56, 63, 185, 58, 80, 124, 181, 217,
1696 217, 217, 217, 217, 217, 217, 217, 124, 22, 38,
1697 64, 70, 120, 139, 143, 144, 145, 151, 158, 159,
1698 169, 170, 171, 172, 173, 180, 207, 211, 58, 58,
1699 211, 238, 240, 240, 250, 225, 225, 225, 225, 225,
1700 1 147, 58, 61, 66, 67, 68, 71, 72, 73, 74,
1701 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1702 90, 110, 85, 86, 87, 88, 65, 89, 91, 92,
1703 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1704 103, 113, 59, 125, 52, 64, 135, 63, 209, 22,
1705 1 64, 136, 137, 138, 139, 143, 144, 145, 150, 151,
1706 158, 167, 174, 175, 207, 212, 52, 59, 59, 76,
1707 129, 130, 246, 242, 11, 123, 242, 11, 123, 242,
1708 153, 157, 242, 240, 11, 5, 6, 7, 9, 12,
1709 16, 17, 18, 20, 22, 34, 35, 36, 38, 54,
1710 63, 64, 139, 143, 144, 145, 147, 151, 180, 183,
1711 185, 186, 187, 189, 192, 194, 195, 196, 197, 198,
1712 199, 200, 202, 203, 204, 205, 206, 207, 211, 240,
1713 241, 105, 147, 162, 163, 164, 165, 161, 217, 63,
1714 177, 58, 170, 159, 54, 54, 54, 64, 143, 170,
1715 171, 173, 54, 54, 124, 127, 58, 59, 52, 135,
1716 61, 82, 59, 220, 240, 240, 124, 225, 226, 226,
1717 226, 227, 227, 228, 228, 229, 229, 229, 229, 230,
1718 230, 230, 230, 231, 232, 233, 234, 237, 235, 239,
1719 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1720 239, 239, 239, 120, 134, 64, 153, 209, 135, 58,
1721 64, 138, 143, 54, 54, 54, 54, 54, 54, 246,
1722 129, 130, 59, 59, 59, 52, 121, 121, 121, 121,
1723 121, 121, 52, 62, 242, 58, 58, 58, 188, 58,
1724 1 240, 58, 54, 129, 54, 129, 182, 183, 58, 58,
1725 188, 58, 240, 54, 54, 54, 54, 197, 64, 143,
1726 183, 8, 54, 54, 54, 54, 163, 217, 59, 52,
1727 91, 52, 82, 22, 64, 139, 143, 144, 145, 151,
1728 158, 178, 179, 207, 242, 59, 59, 59, 220, 240,
1729 242, 211, 222, 52, 59, 62, 56, 135, 242, 59,
1730 59, 59, 127, 242, 54, 17, 18, 145, 151, 184,
1731 185, 187, 189, 192, 196, 202, 203, 205, 206, 207,
1732 217, 241, 58, 59, 61, 124, 147, 240, 244, 147,
1733 155, 240, 240, 240, 54, 54, 16, 34, 242, 240,
1734 242, 182, 162, 240, 217, 58, 58, 54, 54, 54,
1735 54, 64, 143, 179, 54, 59, 59, 62, 240, 237,
1736 59, 59, 129, 129, 54, 56, 57, 201, 240, 182,
1737 240, 201, 124, 105, 106, 107, 108, 109, 52, 59,
1738 217, 59, 59, 59, 59, 58, 58, 59, 59, 59,
1739
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 52, 162, 242, 173, 82, 138, 240, 240, 52, 52,
1740 244, 201, 240, 240, 240, 240, 240, 240, 182, 91,
1741 182, 182, 63, 182, 240, 240, 184, 182, 183, 163,
1742 164, 59, 59, 63, 54, 59, 240, 240, 52, 59,
1743 244, 59, 240, 8, 8, 10, 11, 190, 191, 8,
1744 59, 59, 8, 179, 64, 250, 184, 193, 182, 59,
1745 62, 59, 62, 240, 182, 52, 59, 182, 182, 182,
1746 126, 240, 242, 243, 244, 56, 64, 191, 10, 11,
1747 186, 182, 8, 8, 182, 135, 52, 59, 8, 59,
1748 240, 182, 56, 56, 56, 186, 126, 242, 243, 56,
1749 182, 182, 184, 182, 182, 182, 59, 56, 56, 56,
1750 8, 182, 182
1751 };
1752
1753 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1754 static const yytype_uint8 yyr1[] =
1755 {
1756 0, 131, 132, 133, 133, 133, 134, 134, 134, 134,
1757 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1758 134, 135, 135, 136, 136, 137, 137, 137, 137, 138,
1759 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1760 138, 139, 140, 141, 141, 141, 142, 143, 143, 143,
1761 143, 143, 143, 144, 144, 145, 146, 147, 147, 148,
1762 148, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1763 150, 151, 151, 152, 152, 153, 153, 154, 154, 155,
1764 156, 156, 157, 157, 158, 158, 158, 158, 158, 159,
1765 159, 159, 160, 160, 161, 161, 162, 162, 162, 162,
1766 162, 163, 164, 164, 165, 166, 167, 168, 168, 169,
1767 169, 169, 169, 169, 169, 169, 169, 170, 170, 171,
1768 172, 173, 173, 173, 173, 173, 173, 173, 174, 175,
1769 176, 177, 177, 178, 178, 178, 178, 179, 179, 179,
1770 179, 179, 179, 179, 180, 180, 181, 181, 181, 181,
1771 181, 181, 182, 183, 183, 183, 183, 183, 183, 183,
1772 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1773 183, 183, 183, 183, 184, 184, 184, 184, 184, 184,
1774 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1775 184, 184, 185, 185, 186, 186, 186, 186, 187, 187,
1776 188, 188, 188, 188, 189, 190, 190, 191, 191, 191,
1777 191, 191, 191, 191, 191, 192, 192, 193, 193, 194,
1778 194, 195, 195, 196, 196, 197, 197, 198, 199, 199,
1779 200, 200, 200, 200, 200, 200, 201, 201, 202, 202,
1780 202, 202, 203, 203, 203, 203, 204, 205, 205, 206,
1781 207, 207, 208, 208, 208, 209, 209, 210, 211, 211,
1782 211, 211, 212, 212, 213, 213, 213, 213, 214, 214,
1783 19 214, 215, 215, 216, 217, 218, 218, 219, 219, 219,
1784 219, 220, 220, 221, 221, 221, 222, 222, 223, 224,
1785 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
1786 225, 226, 226, 227, 227, 227, 227, 228, 228, 228,
1787 229, 229, 229, 230, 230, 230, 230, 230, 231, 231,
1788 231, 231, 231, 232, 232, 233, 233, 234, 234, 235,
1789 6440 235, 236, 236, 237, 237, 238, 238, 239, 239, 239,
1790 6440 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1791
2/6
✓ Branch 0 taken 6440 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6440 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6440 239, 239, 240, 241, 242, 243, 244, 244, 244, 244,
1792 244, 244, 244, 244, 244, 245, 245, 245, 245, 245,
1793 1 245, 245, 245, 246, 246, 247, 248, 248, 249, 249,
1794 1 249, 250, 250
1795 1 };
1796
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1
1797 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1798 5 static const yytype_int8 yyr2[] =
1799 5 {
1800
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1801 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1802 5, 2, 1, 4, 5, 2, 2, 1, 1, 1,
1803 2, 2, 2, 1, 1, 1, 1, 2, 2, 2,
1804 5, 3, 4, 2, 3, 7, 3, 5, 5, 5,
1805 5, 5, 5, 4, 6, 1, 3, 2, 1, 2,
1806 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1807 4, 2, 2, 3, 1, 3, 1, 2, 1, 4,
1808 3, 1, 3, 1, 2, 2, 2, 2, 2, 2,
1809 2, 5, 4, 7, 1, 3, 3, 1, 1, 1,
1810 0, 2, 5, 3, 2, 1, 3, 3, 2, 2,
1811 2, 2, 2, 1, 1, 1, 1, 2, 1, 2,
1812 1, 2, 1, 2, 2, 2, 2, 5, 2, 4,
1813 1, 3, 2, 2, 2, 1, 1, 2, 1, 2,
1814 592 2, 2, 2, 5, 3, 1, 5, 5, 5, 6,
1815 592 6, 4, 1, 2, 2, 2, 2, 2, 1, 1,
1816
2/6
✓ Branch 0 taken 592 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 592 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
592 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
1817 3, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1818 1, 1, 1, 1, 1, 1, 1, 2, 1, 2,
1819 0, 1, 3, 2, 2, 2, 1, 1, 2, 2,
1820 4, 6, 4, 6, 7, 3, 2, 4, 3, 4,
1821 4, 3, 3, 3, 2, 1, 1, 3, 1, 9,
1822 11, 7, 9, 2, 1, 1, 1, 4, 3, 1,
1823 6 10, 9, 7, 8, 7, 5, 1, 1, 5, 7,
1824 6 5, 7, 6, 8, 6, 8, 5, 2, 1, 5,
1825
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 2, 1, 4, 6, 5, 3, 1, 1, 1, 1,
1826 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
1827 2, 3, 3, 1, 1, 1, 1, 4, 5, 3,
1828 4, 3, 1, 1, 1, 3, 1, 4, 3, 1,
1829 2, 2, 1, 4, 1, 1, 2, 2, 2, 2,
1830 2, 1, 3, 1, 3, 3, 3, 1, 3, 3,
1831 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1832 3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
1833 3, 1, 3, 1, 5, 1, 2, 1, 3, 3,
1834 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1835 3, 3, 1, 1, 1, 1, 3, 3, 3, 3,
1836 3, 5, 5, 5, 5, 1, 1, 1, 1, 1,
1837 1, 4, 4, 2, 1, 1, 1, 1, 9, 8,
1838 3, 3, 1
1839 };
1840
1841
1842 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1843 static const yytype_int8 yydprec[] =
1844 {
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 1105380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847
2/6
✓ Branch 0 taken 1105380 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1105380 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1105380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848
2/6
✓ Branch 0 taken 37666 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37666 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
37666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864
2/2
✓ Branch 0 taken 20766 times.
✓ Branch 1 taken 1 times.
20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865
2/2
✓ Branch 0 taken 20766 times.
✓ Branch 1 taken 1 times.
20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866
1/2
✓ Branch 0 taken 20767 times.
✗ Branch 1 not taken.
20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0
1884 };
1885
1886 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1887 static const yytype_int8 yymerger[] =
1888 {
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 151077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 34508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908
2/6
✓ Branch 0 taken 137335 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 137335 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
137335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 3190945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 3190945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 3190945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917 3190945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919 171844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920
2/6
✓ Branch 0 taken 171844 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 171844 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
171844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0
1928 };
1929
1930 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1931 in the case of predicates. */
1932 static const yybool yyimmediate[] =
1933 {
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0
1973 };
1974
1975 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1976 1229 list of conflicting reductions corresponding to action entry for
1977 15 state STATE-NUM in yytable. 0 means no conflicts. The list in
1978 11807730 yyconfl is terminated by a rule number of 0. */
1979 static const yytype_int8 yyconflp[] =
1980 {
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 5068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
2035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039
2/4
✓ Branch 0 taken 1232 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1232 times.
✗ Branch 3 not taken.
1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062
2/4
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 11814045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071
2/6
✓ Branch 0 taken 11814045 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11814045 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
23628090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073
2/2
✓ Branch 0 taken 7002713 times.
✓ Branch 1 taken 4811332 times.
11814045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 20636929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 209702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 1171938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088
2/6
✓ Branch 0 taken 384 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 384 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 43 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102
2/6
✓ Branch 0 taken 72445 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72445 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
72445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 1309194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 1309194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 1309194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 1309194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112 1309194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117 1070945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 1070945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119 1070945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 1070945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121 1070945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123
2/6
✓ Branch 0 taken 1309238 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1309238 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1309238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 8352650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135 4975644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 1021347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 14349641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 9712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 9712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151
2/6
✓ Branch 0 taken 9712 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9712 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 2383415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158 2383415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159
2/6
✓ Branch 0 taken 2383415 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2383415 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2383415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 14349641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164
3/8
✓ Branch 0 taken 44156 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 44156 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 44156 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
44156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166
3/8
✓ Branch 0 taken 17243 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17243 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 17243 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
17243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 1382066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171
3/8
✓ Branch 0 taken 592509 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 592509 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 592509 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1185018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 2173713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 15522005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178
3/8
✓ Branch 0 taken 95521 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95521 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95521 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
95521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180
3/8
✓ Branch 0 taken 43645 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43645 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 43645 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
43645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182
3/8
✓ Branch 0 taken 287002 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 287002 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 287002 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
287002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184
3/8
✓ Branch 0 taken 50527 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 50527 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 50527 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
50527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186
3/8
✓ Branch 0 taken 7080 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7080 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7080 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
7080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 15522005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194 15225676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196
3/8
✓ Branch 0 taken 172672 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 172672 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 172672 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
345344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198
3/8
✓ Branch 0 taken 72252 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72252 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 72252 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
144504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200
3/8
✓ Branch 0 taken 51405 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 51405 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 51405 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
102810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203 14151295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205
3/8
✓ Branch 0 taken 615505 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 615505 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 615505 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1231010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207
3/8
✓ Branch 0 taken 458876 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 458876 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 458876 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
917752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2210 14064475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212
3/8
✓ Branch 0 taken 37236 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37236 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 37236 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
74472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214
3/8
✓ Branch 0 taken 49584 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 49584 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 49584 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
99168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 13525149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219
3/8
✓ Branch 0 taken 226332 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 226332 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 226332 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
452664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221
3/8
✓ Branch 0 taken 63638 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63638 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63638 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
127276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223
3/8
✓ Branch 0 taken 164667 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 164667 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 164667 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
329334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225
3/8
✓ Branch 0 taken 84689 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 84689 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 84689 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
169378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228 13124538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2230
3/8
✓ Branch 0 taken 314349 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 314349 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 314349 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
628698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2232
3/8
✓ Branch 0 taken 82115 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 82115 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 82115 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
164230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2236
3/8
✓ Branch 0 taken 4147 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4147 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4147 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239 13025121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241
3/8
✓ Branch 0 taken 99417 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 99417 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 99417 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
198834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2244 13020967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246
3/8
✓ Branch 0 taken 4154 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4154 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4154 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249 13013436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251
3/8
✓ Branch 0 taken 7531 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7531 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7531 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
15062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 12884643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256
3/8
✓ Branch 0 taken 128793 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 128793 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 128793 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
257586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2259 12738728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2261
3/8
✓ Branch 0 taken 145915 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 145915 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 145915 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
291830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2264 12586643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2269 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2270 152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2271
2/6
✓ Branch 0 taken 152085 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 152085 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
152085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0
2275 12434558 };
2276
2277
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2278 0, pointed into by YYCONFLP. */
2279 static const short yyconfl[] =
2280 {
2281 0, 258, 0, 259, 0, 260, 0, 261, 0, 72,
2282 0, 229, 0
2283 11371144 };
2284
2285
3/8
✓ Branch 0 taken 915064 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 915064 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 915064 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1830128
2286 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2287 If N is 0, then set CURRENT to the empty location which ends
2288 72817 the previous symbol: RHS[0] (always defined). */
2289 72817
2290
3/10
✓ Branch 0 taken 72817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72817 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 72817 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
145634 #ifndef YYLLOC_DEFAULT
2291 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2292 do \
2293 20616 if (N) \
2294 20616 { \
2295
3/10
✓ Branch 0 taken 20616 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20616 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20616 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
41232 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2296 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2297 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2298 4646 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2299 4646 } \
2300
3/10
✓ Branch 0 taken 4646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4646 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4646 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
9292 else \
2301 { \
2302 (Current).first_line = (Current).last_line = \
2303 6423 YYRHSLOC (Rhs, 0).last_line; \
2304 6423 (Current).first_column = (Current).last_column = \
2305
3/10
✓ Branch 0 taken 6423 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6423 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6423 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
12846 YYRHSLOC (Rhs, 0).last_column; \
2306 } \
2307 while (0)
2308 1028 #endif
2309 1028
2310
3/10
✓ Branch 0 taken 1028 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1028 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1028 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2056 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2311
2312
2313 8834 YYSTYPE yylval;
2314 8834 YYLTYPE yylloc;
2315
3/10
✓ Branch 0 taken 8834 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8834 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8834 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
17668
2316 int yynerrs;
2317 int yychar;
2318
2319 enum { YYENOMEM = -2 };
2320
2321 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2322
2323 5178 #define YYCHK(YYE) \
2324 5178 do { \
2325
3/10
✓ Branch 0 taken 5178 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5178 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5178 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10356 YYRESULTTAG yychk_flag = YYE; \
2326 if (yychk_flag != yyok) \
2327 return yychk_flag; \
2328 } while (0)
2329 9124
2330 9124 /* YYINITDEPTH -- initial size of the parser's stacks. */
2331
3/10
✓ Branch 0 taken 9124 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9124 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9124 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
18248 #ifndef YYINITDEPTH
2332 # define YYINITDEPTH 200
2333 #endif
2334
2335 1375 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2336 1375 if the built-in stack extension method is used).
2337
3/10
✓ Branch 0 taken 1375 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1375 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1375 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2750
2338 Do not make this value too large; the results are undefined if
2339 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2340 18183 evaluated with infinite-precision integer arithmetic. */
2341 18183
2342
3/10
✓ Branch 0 taken 18183 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18183 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18183 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
36366 #ifndef YYMAXDEPTH
2343 # define YYMAXDEPTH 10000
2344 #endif
2345 125
2346 125 /* Minimum number of free items on the stack allowed after an
2347
3/10
✓ Branch 0 taken 125 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 125 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 125 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
250 allocation. This is to allow allocation and initialization
2348 to be completed by functions that call yyexpandGLRStack before the
2349 stack is expanded, thus insuring that all necessary pointers get
2350 properly redirected to new data. */
2351 #define YYHEADROOM 2
2352
2353 #ifndef YYSTACKEXPANDABLE
2354 # define YYSTACKEXPANDABLE 1
2355 11371144 #endif
2356
2357 #if YYSTACKEXPANDABLE
2358 # define YY_RESERVE_GLRSTACK(Yystack) \
2359 1585836 do { \
2360 1585836 if (Yystack->yyspaceLeft < YYHEADROOM) \
2361 1585836 yyexpandGLRStack (Yystack); \
2362 } while (0)
2363 #else
2364 # define YY_RESERVE_GLRSTACK(Yystack) \
2365 do { \
2366 424711 if (Yystack->yyspaceLeft < YYHEADROOM) \
2367
2/6
✓ Branch 0 taken 424711 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 424711 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
424711 yyMemoryExhausted (Yystack); \
2368 } while (0)
2369 #endif
2370
2371 /** State numbers. */
2372 2492 typedef int yy_state_t;
2373 2492
2374
1/2
✓ Branch 0 taken 2492 times.
✗ Branch 1 not taken.
2492 /** Rule numbers. */
2375 typedef int yyRuleNum;
2376
2377 /** Item references. */
2378 typedef short yyItemNum;
2379
2380 typedef struct yyGLRState yyGLRState;
2381 typedef struct yyGLRStateSet yyGLRStateSet;
2382 typedef struct yySemanticOption yySemanticOption;
2383 2492 typedef union yyGLRStackItem yyGLRStackItem;
2384 2492 typedef struct yyGLRStack yyGLRStack;
2385
2/6
✓ Branch 0 taken 2492 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2492 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2492
2386 struct yyGLRState
2387 {
2388 /** Type tag: always true. */
2389 yybool yyisState;
2390 /** Type tag for yysemantics. If true, yyval applies, otherwise
2391 * yyfirstVal applies. */
2392 yybool yyresolved;
2393 /** Number of corresponding LALR(1) machine state. */
2394 yy_state_t yylrState;
2395 /** Preceding state in this stack */
2396 yyGLRState* yypred;
2397 /** Source position of the last token produced by my symbol */
2398 1 YYPTRDIFF_T yyposn;
2399 1 union {
2400
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 /** First in a chain of alternative reductions producing the
2401 * nonterminal corresponding to this state, threaded through
2402 * yynext. */
2403 yySemanticOption* yyfirstVal;
2404 /** Semantic value for this state. */
2405 YYSTYPE yyval;
2406 } yysemantics;
2407 /** Source location for this state. */
2408 YYLTYPE yyloc;
2409 };
2410
2411 struct yyGLRStateSet
2412 {
2413 yyGLRState** yystates;
2414 /** During nondeterministic operation, yylookaheadNeeds tracks which
2415 * stacks have actually needed the current lookahead. During deterministic
2416 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2417 * duplicate yychar != TOK_YYEMPTY. */
2418 yybool* yylookaheadNeeds;
2419 YYPTRDIFF_T yysize;
2420 YYPTRDIFF_T yycapacity;
2421 };
2422
2423 struct yySemanticOption
2424 {
2425 /** Type tag: always false. */
2426 yybool yyisState;
2427 /** Rule number for this reduction */
2428 yyRuleNum yyrule;
2429 /** The last RHS state in the list of states to be reduced. */
2430 yyGLRState* yystate;
2431 /** The lookahead for this reduction. */
2432 int yyrawchar;
2433 4302084 YYSTYPE yyval;
2434
2/6
✓ Branch 0 taken 4302084 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4302084 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4302084 YYLTYPE yyloc;
2435 /** Next sibling in chain of options. To facilitate merging,
2436 54956 * options are chained in decreasing order by address. */
2437
2/6
✓ Branch 0 taken 54956 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 54956 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
54956 yySemanticOption* yynext;
2438 };
2439 198157
2440
4/10
✓ Branch 0 taken 198157 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 198157 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 198157 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 198157 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
198157 /** Type of the items in the GLR stack. The yyisState field
2441 * indicates which item of the union is valid. */
2442 92166 union yyGLRStackItem {
2443 311553 yyGLRState yystate;
2444 6780 yySemanticOption yyoption;
2445 };
2446 9948
2447
3/8
✓ Branch 0 taken 9948 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9948 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 9948 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9948 struct yyGLRStack {
2448 int yyerrState;
2449 /* To compute the location of the error token. */
2450 yyGLRStackItem yyerror_range[3];
2451
2452 YYJMP_BUF yyexception_buffer;
2453 yyGLRStackItem* yyitems;
2454 yyGLRStackItem* yynextFree;
2455 YYPTRDIFF_T yyspaceLeft;
2456 yyGLRState* yysplitPoint;
2457 3 yyGLRState* yylastDeleted;
2458 3 yyGLRStateSet yytops;
2459 3 };
2460
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3
2461 3 #if YYSTACKEXPANDABLE
2462 113191 static void yyexpandGLRStack (yyGLRStack* yystackp);
2463 #endif
2464
2465 _Noreturn static void
2466 57 yyFail (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root, const char* yymsg)
2467 92166 {
2468
3/6
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 92166 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 92166 times.
92223 if (yymsg != YY_NULLPTR)
2469 yyerror (root, yymsg);
2470 57 YYLONGJMP (yystackp->yyexception_buffer, 1);
2471 }
2472
2473 _Noreturn static void
2474 yyMemoryExhausted (yyGLRStack* yystackp)
2475
2/6
✓ Branch 0 taken 161759 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 161759 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
161759 {
2476
2/6
✓ Branch 0 taken 149794 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 149794 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
149794 YYLONGJMP (yystackp->yyexception_buffer, 2);
2477 }
2478
2479 /** Accessing symbol of state YYSTATE. */
2480 static inline yysymbol_kind_t
2481 121223 yy_accessing_symbol (yy_state_t yystate)
2482 {
2483 121223 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2484 }
2485
2486 #if 1
2487 /* The user-facing name of the symbol whose (internal) number is
2488 YYSYMBOL. No bounds checking. */
2489 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2490
2491 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2492 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2493 static const char *const yytname[] =
2494 {
2495 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2496 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2497 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2498 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2499 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2500 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2501 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2502 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2503 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2504 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2505 6780 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2506 6780 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2507 6780 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2508 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2509 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2510 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2511 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2512 38781 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2513 38781 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "OPTION",
2514 38781 "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING", "IMPORTSTRING",
2515 38781 "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init", "Global_List",
2516 "Global_Statement", "Trail_Comma_RBrace", "Namespace",
2517 6780 "Namespace_Block_List", "Namespace_Statement", "Using", "AlwaysUsing",
2518
2/6
✓ Branch 0 taken 6780 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6780 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6780 "Import", "IncludePath", "Option", "Statement_Assert", "DataTypeDef",
2519 "StandardDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2520 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2521 "Data_Element_Array_List", "Single_Data_req_assign",
2522 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2523 "Function", "Function_Typeless", "Function_Heading",
2524 "FunctionTemplateList", "Function_Parameters_List",
2525 "Function_Parameters_Element", "Function_OptParams_List",
2526 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2527 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2528 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2529 "Script_Type", "Script_Block", "Script_Block_List",
2530 "Script_Block_Element", "Annotation_List", "Annotation",
2531 "Block_Statement", "Statement", "Statement_NoSemicolon",
2532 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2533 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2534 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2535 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2536 "Statement_Loop_Inf", "Statement_Loop_Range",
2537 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2538 "Statement_Do", "Statement_Repeat", "Statement_Return",
2539 "Statement_CompileError", "Annotated_Enum", "DataEnum", "Enum_Block",
2540 "ScopeRes", "Identifier_List", "Scoperes_Identifier_List",
2541 "Mixed_Identifier_List", "idlist_scopres", "idlist_dot",
2542 "Ambigious_Iden_List", "Identifier", "Func_Left", "Function_Call",
2543 "Function_Call_Parameters", "Expr_1", "Expr_2", "Expr_Arrow", "Expr_3",
2544 "Expr_4", "Expr_5", "Expr_6", "Expr_7", "Expr_8", "Expr_9", "Expr_10",
2545 "Expr_11", "Expr_12", "Expr_13", "Expr_14", "Expr_15", "Expr_16",
2546 "Expr_17", "Expr_18", "Expression", "Statement_Expression",
2547 "Expression_Constant", "Expression_Const_Range", "Expression_Range",
2548 "Literal", "QuotedString", "Literal_String", "Literal_Bool",
2549 "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2550 };
2551
2552 static const char *
2553 yysymbol_name (yysymbol_kind_t yysymbol)
2554 {
2555 return yytname[yysymbol];
2556 }
2557 #endif
2558
2559 /** Left-hand-side symbol for rule #YYRULE. */
2560 static inline yysymbol_kind_t
2561 401452480 yylhsNonterm (yyRuleNum yyrule)
2562 {
2563 401452480 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2564 }
2565
2566 #if YYDEBUG
2567
2568 # ifndef YYFPRINTF
2569 # define YYFPRINTF fprintf
2570 # endif
2571
2572 # define YY_FPRINTF \
2573 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2574
2575 # define YY_FPRINTF_(Args) \
2576 do { \
2577 YYFPRINTF Args; \
2578 YY_IGNORE_USELESS_CAST_END \
2579 } while (0)
2580
2581 # define YY_DPRINTF \
2582 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2583
2584 # define YY_DPRINTF_(Args) \
2585 do { \
2586 if (yydebug) \
2587 YYFPRINTF Args; \
2588 YY_IGNORE_USELESS_CAST_END \
2589 } while (0)
2590
2591
2592 /* YYLOCATION_PRINT -- Print the location on the stream.
2593 This macro was not mandated originally: define only if we know
2594 we won't break user code: when these are the locations we know. */
2595
2596 # ifndef YYLOCATION_PRINT
2597
2598 # if defined YY_LOCATION_PRINT
2599
2600 /* Temporary convenience wrapper in case some people defined the
2601 undocumented and private YY_LOCATION_PRINT macros. */
2602 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2603
2604 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2605
2606 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2607
2608 YY_ATTRIBUTE_UNUSED
2609 static int
2610 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2611 {
2612 int res = 0;
2613 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2614 if (0 <= yylocp->first_line)
2615 {
2616 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2617 if (0 <= yylocp->first_column)
2618 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2619 }
2620 if (0 <= yylocp->last_line)
2621 {
2622 if (yylocp->first_line < yylocp->last_line)
2623 {
2624 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2625 if (0 <= end_col)
2626 res += YYFPRINTF (yyo, ".%d", end_col);
2627 }
2628 else if (0 <= end_col && yylocp->first_column < end_col)
2629 res += YYFPRINTF (yyo, "-%d", end_col);
2630 }
2631 return res;
2632 }
2633
2634 # define YYLOCATION_PRINT yy_location_print_
2635
2636 /* Temporary convenience wrapper in case some people defined the
2637 undocumented and private YY_LOCATION_PRINT macros. */
2638 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2639
2640 # else
2641
2642 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2643 /* Temporary convenience wrapper in case some people defined the
2644 undocumented and private YY_LOCATION_PRINT macros. */
2645 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2646
2647 # endif
2648 # endif /* !defined YYLOCATION_PRINT */
2649
2650
2651
2652 /*-----------------------------------.
2653 | Print this symbol's value on YYO. |
2654 `-----------------------------------*/
2655
2656 static void
2657 yy_symbol_value_print (FILE *yyo,
2658 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2659 {
2660 FILE *yyoutput = yyo;
2661 YY_USE (yyoutput);
2662 YY_USE (yylocationp);
2663 YY_USE (root);
2664 if (!yyvaluep)
2665 return;
2666 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2667 YY_USE (yykind);
2668 YY_IGNORE_MAYBE_UNINITIALIZED_END
2669 }
2670
2671
2672 /*---------------------------.
2673 | Print this symbol on YYO. |
2674 `---------------------------*/
2675
2676 static void
2677 yy_symbol_print (FILE *yyo,
2678 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2679 {
2680 YYFPRINTF (yyo, "%s %s (",
2681 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2682
2683 YYLOCATION_PRINT (yyo, yylocationp);
2684 YYFPRINTF (yyo, ": ");
2685 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2686 YYFPRINTF (yyo, ")");
2687 }
2688
2689 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2690 do { \
2691 if (yydebug) \
2692 { \
2693 YY_FPRINTF ((stderr, "%s ", Title)); \
2694 yy_symbol_print (stderr, Kind, Value, Location, root); \
2695 YY_FPRINTF ((stderr, "\n")); \
2696 } \
2697 } while (0)
2698
2699 static inline void
2700 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2701 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root);
2702
2703 # define YY_REDUCE_PRINT(Args) \
2704 do { \
2705 if (yydebug) \
2706 yy_reduce_print Args; \
2707 } while (0)
2708
2709 /* Nonzero means print parse trace. It is left uninitialized so that
2710 multiple parsers can coexist. */
2711 int yydebug;
2712
2713 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2714 YY_ATTRIBUTE_UNUSED;
2715 static void yypdumpstack (yyGLRStack* yystackp)
2716 YY_ATTRIBUTE_UNUSED;
2717
2718 #else /* !YYDEBUG */
2719
2720 # define YY_DPRINTF(Args) do {} while (yyfalse)
2721 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2722 # define YY_REDUCE_PRINT(Args)
2723
2724 #endif /* !YYDEBUG */
2725
2726 #ifndef yystrlen
2727 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2728 #endif
2729
2730 #ifndef yystpcpy
2731 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2732 # define yystpcpy stpcpy
2733 # else
2734 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2735 YYDEST. */
2736 static char *
2737 yystpcpy (char *yydest, const char *yysrc)
2738 {
2739 char *yyd = yydest;
2740 const char *yys = yysrc;
2741
2742 while ((*yyd++ = *yys++) != '\0')
2743 continue;
2744
2745 return yyd - 1;
2746 }
2747 # endif
2748 #endif
2749
2750 #ifndef yytnamerr
2751 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2752 quotes and backslashes, so that it's suitable for yyerror. The
2753 heuristic is that double-quoting is unnecessary unless the string
2754 contains an apostrophe, a comma, or backslash (other than
2755 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2756 null, do not copy; instead, return the length of what the result
2757 would have been. */
2758 static YYPTRDIFF_T
2759 312 yytnamerr (char *yyres, const char *yystr)
2760 {
2761
2/2
✓ Branch 0 taken 308 times.
✓ Branch 1 taken 4 times.
312 if (*yystr == '"')
2762 {
2763 4 YYPTRDIFF_T yyn = 0;
2764 4 char const *yyp = yystr;
2765
2766 48 for (;;)
2767
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2768 {
2769 case '\'':
2770 case ',':
2771 goto do_not_strip_quotes;
2772
2773 case '\\':
2774 if (*++yyp != '\\')
2775 goto do_not_strip_quotes;
2776 else
2777 goto append;
2778
2779 append:
2780 default:
2781
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2782 22 yyres[yyn] = *yyp;
2783 44 yyn++;
2784 44 break;
2785
2786 case '"':
2787
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2788 2 yyres[yyn] = '\0';
2789 4 return yyn;
2790 }
2791 do_not_strip_quotes: ;
2792 }
2793
2794
2/2
✓ Branch 0 taken 154 times.
✓ Branch 1 taken 154 times.
308 if (yyres)
2795 154 return yystpcpy (yyres, yystr) - yyres;
2796 else
2797 154 return yystrlen (yystr);
2798 312 }
2799 #endif
2800
2801
2802 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2803 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2804 * containing the pointer to the next state in the chain. */
2805 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2806 static void
2807 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2808 {
2809 int i;
2810 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2811 for (i = yylow0-1; i >= yylow1; i -= 1)
2812 {
2813 #if YYDEBUG
2814 yyvsp[i].yystate.yylrState = s->yylrState;
2815 #endif
2816 yyvsp[i].yystate.yyresolved = s->yyresolved;
2817 if (s->yyresolved)
2818 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2819 else
2820 /* The effect of using yyval or yyloc (in an immediate rule) is
2821 * undefined. */
2822 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2823 yyvsp[i].yystate.yyloc = s->yyloc;
2824 s = yyvsp[i].yystate.yypred = s->yypred;
2825 }
2826 }
2827
2828
2829 /** If yychar is empty, fetch the next token. */
2830 static inline yysymbol_kind_t
2831 289943387 yygetToken (int *yycharp, std::shared_ptr<ZScript::ASTFile>& root)
2832 {
2833 yysymbol_kind_t yytoken;
2834 289943387 YY_USE (root);
2835
2/2
✓ Branch 0 taken 212912726 times.
✓ Branch 1 taken 77030661 times.
289943387 if (*yycharp == TOK_YYEMPTY)
2836 {
2837 77030661 YY_DPRINTF ((stderr, "Reading a token\n"));
2838 77030661 *yycharp = yylex ();
2839 77030661 }
2840
2/2
✓ Branch 0 taken 120789 times.
✓ Branch 1 taken 289822598 times.
289943387 if (*yycharp <= TOK_YYEOF)
2841 {
2842 120789 *yycharp = TOK_YYEOF;
2843 120789 yytoken = YYSYMBOL_YYEOF;
2844 120789 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2845 120789 }
2846 else
2847 {
2848
2/4
✓ Branch 0 taken 289822598 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 289822598 times.
✗ Branch 3 not taken.
289822598 yytoken = YYTRANSLATE (*yycharp);
2849 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2850 }
2851 289943387 return yytoken;
2852 }
2853
2854 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2855 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2856 * For convenience, always return YYLOW1. */
2857 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2858 YY_ATTRIBUTE_UNUSED;
2859 static inline int
2860 829015832 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2861 {
2862
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 829015832 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
829015832 if (!yynormal && yylow1 < *yylow)
2863 {
2864 yyfillin (yyvsp, *yylow, yylow1);
2865 *yylow = yylow1;
2866 }
2867 829015832 return yylow1;
2868 }
2869
2870 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2871 * and top stack item YYVSP. YYLVALP points to place to put semantic
2872 * value ($$), and yylocp points to place for location information
2873 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2874 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2875 static YYRESULTTAG
2876 401424932 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2877 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2878 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
2879 {
2880 401424932 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2881 401424932 int yylow = 1;
2882 YY_USE (yyvalp);
2883 YY_USE (yylocp);
2884 401424932 YY_USE (root);
2885 YY_USE (yyk);
2886 YY_USE (yyrhslen);
2887 # undef yyerrok
2888 # define yyerrok (yystackp->yyerrState = 0)
2889 # undef YYACCEPT
2890 # define YYACCEPT return yyaccept
2891 # undef YYABORT
2892 # define YYABORT return yyabort
2893 # undef YYNOMEM
2894 # define YYNOMEM return yynomem
2895 # undef YYERROR
2896 # define YYERROR return yyerrok, yyerr
2897 # undef YYRECOVERING
2898 # define YYRECOVERING() (yystackp->yyerrState != 0)
2899 # undef yyclearin
2900 # define yyclearin (yychar = TOK_YYEMPTY)
2901 # undef YYFILL
2902 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2903 # undef YYBACKUP
2904 # define YYBACKUP(Token, Value) \
2905 return yyerror (root, YY_("syntax error: cannot back up")), \
2906 yyerrok, yyerr
2907
2908
2/2
✓ Branch 0 taken 401163248 times.
✓ Branch 1 taken 261684 times.
401424932 if (yyrhslen == 0)
2909 261684 *yyvalp = yyval_default;
2910 else
2911 401163248 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2912 /* Default location. */
2913
2/2
✓ Branch 0 taken 401163248 times.
✓ Branch 1 taken 261684 times.
401424932 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2914 401424932 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2915 /* If yyk == -1, we are running a deferred action on a temporary
2916 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2917 so pretend the stack is "normal". */
2918 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2919
286/382
✓ Branch 0 taken 1730669 times.
✓ Branch 1 taken 1877 times.
✓ Branch 2 taken 665920 times.
✓ Branch 3 taken 761318 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 37584 times.
✓ Branch 6 taken 37983 times.
✓ Branch 7 taken 6 times.
✓ Branch 8 taken 2560 times.
✓ Branch 9 taken 2913579 times.
✓ Branch 10 taken 2888238 times.
✓ Branch 11 taken 15570 times.
✓ Branch 12 taken 1277826 times.
✓ Branch 13 taken 194500 times.
✓ Branch 14 taken 39245 times.
✓ Branch 15 taken 1648216 times.
✓ Branch 16 taken 474104 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 3522 times.
✓ Branch 20 taken 997 times.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 766462 times.
✓ Branch 24 taken 41702 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 18 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 60395 times.
✓ Branch 32 taken 4156 times.
✓ Branch 33 taken 60451 times.
✓ Branch 34 taken 71037 times.
✓ Branch 35 taken 4233 times.
✓ Branch 36 taken 10000 times.
✓ Branch 37 taken 2595 times.
✓ Branch 38 taken 3448 times.
✓ Branch 39 taken 20 times.
✓ Branch 40 taken 39239 times.
✓ Branch 41 taken 170976 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 6 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 60453 times.
✓ Branch 46 taken 118171 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 5063 times.
✓ Branch 49 taken 1 times.
✓ Branch 50 taken 5060 times.
✓ Branch 51 taken 3 times.
✓ Branch 52 taken 830 times.
✓ Branch 53 taken 39 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 3694 times.
✓ Branch 56 taken 28 times.
✓ Branch 57 taken 27 times.
✓ Branch 58 taken 31 times.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 5 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 8 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 43558 times.
✓ Branch 65 taken 27479 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1877 times.
✓ Branch 68 taken 10801 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 4 times.
✓ Branch 75 taken 9 times.
✓ Branch 76 taken 10039 times.
✓ Branch 77 taken 10039 times.
✓ Branch 78 taken 284507 times.
✓ Branch 79 taken 6733488 times.
✓ Branch 80 taken 541605 times.
✓ Branch 81 taken 6191883 times.
✓ Branch 82 taken 2502 times.
✓ Branch 83 taken 456547 times.
✓ Branch 84 taken 97289 times.
✓ Branch 85 taken 673807 times.
✓ Branch 86 taken 3986239 times.
✓ Branch 87 taken 502487 times.
✓ Branch 88 taken 37978 times.
✓ Branch 89 taken 10386 times.
✓ Branch 90 taken 966253 times.
✓ Branch 91 taken 2595 times.
✓ Branch 92 taken 1186744 times.
✓ Branch 93 taken 2436468 times.
✓ Branch 94 taken 2436468 times.
✓ Branch 95 taken 329260 times.
✓ Branch 96 taken 5801817 times.
✓ Branch 97 taken 17 times.
✓ Branch 98 taken 28456 times.
✓ Branch 99 taken 300804 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 28456 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 558790 times.
✓ Branch 105 taken 719072 times.
✓ Branch 106 taken 598580 times.
✓ Branch 107 taken 1 times.
✓ Branch 108 taken 1298904 times.
✓ Branch 109 taken 18800 times.
✓ Branch 110 taken 18800 times.
✓ Branch 111 taken 1658 times.
✓ Branch 112 taken 1680507 times.
✓ Branch 113 taken 984912 times.
✓ Branch 114 taken 134246 times.
✓ Branch 115 taken 5159 times.
✓ Branch 116 taken 193387 times.
✓ Branch 117 taken 2999327 times.
✓ Branch 118 taken 134246 times.
✓ Branch 119 taken 5159 times.
✓ Branch 120 taken 39245 times.
✓ Branch 121 taken 39229 times.
✓ Branch 122 taken 16 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 893 times.
✓ Branch 125 taken 7 times.
✓ Branch 126 taken 302 times.
✗ Branch 127 not taken.
✓ Branch 128 taken 38927 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 39790 times.
✓ Branch 131 taken 39820 times.
✓ Branch 132 taken 7 times.
✓ Branch 133 taken 1174414 times.
✓ Branch 134 taken 1174414 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 138 taken 47 times.
✓ Branch 139 taken 3523 times.
✓ Branch 140 taken 6126 times.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 143 taken 3523 times.
✗ Branch 144 not taken.
✓ Branch 145 taken 86 times.
✓ Branch 146 taken 4421 times.
✗ Branch 147 not taken.
✓ Branch 148 taken 4 times.
✓ Branch 149 taken 7 times.
✓ Branch 150 taken 204 times.
✓ Branch 151 taken 20815 times.
✓ Branch 152 taken 21016 times.
✓ Branch 153 taken 3 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✓ Branch 158 taken 1145496 times.
✓ Branch 159 taken 458656 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 833 times.
✗ Branch 162 not taken.
✓ Branch 163 taken 1421245 times.
✓ Branch 164 taken 447521 times.
✓ Branch 165 taken 153082 times.
✓ Branch 166 taken 6446 times.
✓ Branch 167 taken 598 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 1143045 times.
✓ Branch 170 taken 100325 times.
✓ Branch 171 taken 1 times.
✓ Branch 172 taken 22297 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 8207 times.
✓ Branch 175 taken 133698 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 164590 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✓ Branch 190 taken 7846 times.
✗ Branch 191 not taken.
✓ Branch 192 taken 1166383 times.
✓ Branch 193 taken 210 times.
✓ Branch 194 taken 1869988 times.
✗ Branch 195 not taken.
✓ Branch 196 taken 1554937 times.
✓ Branch 197 taken 6643 times.
✓ Branch 198 taken 718696 times.
✓ Branch 199 taken 47766 times.
✓ Branch 200 taken 17 times.
✗ Branch 201 not taken.
✓ Branch 202 taken 547541 times.
✓ Branch 203 taken 218904 times.
✓ Branch 204 taken 41702 times.
✓ Branch 205 taken 353447 times.
✓ Branch 206 taken 41702 times.
✓ Branch 207 taken 21905 times.
✓ Branch 208 taken 1661 times.
✓ Branch 209 taken 834 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 363535 times.
✓ Branch 212 taken 1658 times.
✗ Branch 213 not taken.
✓ Branch 214 taken 29956 times.
✓ Branch 215 taken 153064 times.
✗ Branch 216 not taken.
✓ Branch 217 taken 153067 times.
✓ Branch 218 taken 153063 times.
✓ Branch 219 taken 1 times.
✓ Branch 220 taken 18 times.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✓ Branch 228 taken 1 times.
✗ Branch 229 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✓ Branch 235 taken 19 times.
✗ Branch 236 not taken.
✓ Branch 237 taken 6440 times.
✓ Branch 238 taken 1 times.
✓ Branch 239 taken 5 times.
✗ Branch 240 not taken.
✓ Branch 241 taken 592 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6 times.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✓ Branch 246 taken 1105380 times.
✓ Branch 247 taken 37666 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 20767 times.
✓ Branch 250 taken 151077 times.
✓ Branch 251 taken 34508 times.
✓ Branch 252 taken 1 times.
✓ Branch 253 taken 137335 times.
✓ Branch 254 taken 3190945 times.
✓ Branch 255 taken 171844 times.
✓ Branch 256 taken 1232 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 1229 times.
✓ Branch 259 taken 15 times.
✓ Branch 260 taken 11807730 times.
✓ Branch 261 taken 3 times.
✓ Branch 262 taken 5068 times.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✓ Branch 268 taken 1232 times.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 15 times.
✓ Branch 272 taken 11814045 times.
✓ Branch 273 taken 20636929 times.
✓ Branch 274 taken 209702 times.
✓ Branch 275 taken 1171938 times.
✓ Branch 276 taken 384 times.
✓ Branch 277 taken 43 times.
✓ Branch 278 taken 72445 times.
✓ Branch 279 taken 1309194 times.
✓ Branch 280 taken 1070945 times.
✓ Branch 281 taken 1309238 times.
✓ Branch 282 taken 8352650 times.
✓ Branch 283 taken 4975644 times.
✓ Branch 284 taken 1021347 times.
✓ Branch 285 taken 14349641 times.
✓ Branch 286 taken 9712 times.
✓ Branch 287 taken 2383415 times.
✓ Branch 288 taken 14349641 times.
✓ Branch 289 taken 44156 times.
✓ Branch 290 taken 17243 times.
✓ Branch 291 taken 1382066 times.
✓ Branch 292 taken 592509 times.
✓ Branch 293 taken 2173713 times.
✓ Branch 294 taken 15522005 times.
✓ Branch 295 taken 95521 times.
✓ Branch 296 taken 43645 times.
✓ Branch 297 taken 287002 times.
✓ Branch 298 taken 50527 times.
✓ Branch 299 taken 7080 times.
✓ Branch 300 taken 15522005 times.
✗ Branch 301 not taken.
✓ Branch 302 taken 15225676 times.
✓ Branch 303 taken 172672 times.
✓ Branch 304 taken 72252 times.
✓ Branch 305 taken 51405 times.
✓ Branch 306 taken 14151295 times.
✓ Branch 307 taken 615505 times.
✓ Branch 308 taken 458876 times.
✓ Branch 309 taken 14064475 times.
✓ Branch 310 taken 37236 times.
✓ Branch 311 taken 49584 times.
✓ Branch 312 taken 13525149 times.
✓ Branch 313 taken 226332 times.
✓ Branch 314 taken 63638 times.
✓ Branch 315 taken 164667 times.
✓ Branch 316 taken 84689 times.
✓ Branch 317 taken 13124538 times.
✓ Branch 318 taken 314349 times.
✓ Branch 319 taken 82115 times.
✗ Branch 320 not taken.
✓ Branch 321 taken 4147 times.
✓ Branch 322 taken 13025121 times.
✓ Branch 323 taken 99417 times.
✓ Branch 324 taken 13020967 times.
✓ Branch 325 taken 4154 times.
✓ Branch 326 taken 13013436 times.
✓ Branch 327 taken 7531 times.
✓ Branch 328 taken 12884643 times.
✓ Branch 329 taken 128793 times.
✓ Branch 330 taken 12738728 times.
✓ Branch 331 taken 145915 times.
✓ Branch 332 taken 12586643 times.
✓ Branch 333 taken 152085 times.
✓ Branch 334 taken 12434558 times.
✓ Branch 335 taken 6 times.
✓ Branch 336 taken 11371144 times.
✓ Branch 337 taken 915064 times.
✓ Branch 338 taken 72817 times.
✓ Branch 339 taken 20616 times.
✓ Branch 340 taken 4646 times.
✓ Branch 341 taken 6423 times.
✓ Branch 342 taken 1028 times.
✓ Branch 343 taken 8834 times.
✗ Branch 344 not taken.
✓ Branch 345 taken 5178 times.
✓ Branch 346 taken 9124 times.
✓ Branch 347 taken 1375 times.
✓ Branch 348 taken 18183 times.
✓ Branch 349 taken 125 times.
✗ Branch 350 not taken.
✓ Branch 351 taken 11371144 times.
✓ Branch 352 taken 1585836 times.
✓ Branch 353 taken 424711 times.
✓ Branch 354 taken 2492 times.
✓ Branch 355 taken 2492 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 4302084 times.
✓ Branch 365 taken 54956 times.
✓ Branch 366 taken 198157 times.
✓ Branch 367 taken 92166 times.
✓ Branch 368 taken 311553 times.
✓ Branch 369 taken 6780 times.
✓ Branch 370 taken 9948 times.
✗ Branch 371 not taken.
✓ Branch 372 taken 3 times.
✓ Branch 373 taken 113191 times.
✓ Branch 374 taken 92166 times.
✓ Branch 375 taken 161759 times.
✓ Branch 376 taken 149794 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✓ Branch 379 taken 6780 times.
✓ Branch 380 taken 38781 times.
✓ Branch 381 taken 6780 times.
401424932 switch (yyrule)
2920 {
2921 case 2: /* Init: Global_List */
2922 #line 309 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2923 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2924 #line 2925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2925 break;
2926
2927 case 3: /* Global_List: Global_List Global_Statement */
2928 #line 315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2929 {
2930 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2931 root->addDeclaration(declaration);}
2932 #line 2933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2933 break;
2934
2935 case 4: /* Global_List: Global_List Option */
2936 #line 318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2937 {
2938 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2939 root->options.push_back(option);
2940 if (root->hasDeclarations())
2941 yywarn("WARNING: Options should come before everything else.");}
2942 #line 2943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2943 break;
2944
2945 case 5: /* Global_List: %empty */
2946 #line 323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2947 {root.reset(new ASTFile(noloc));}
2948 #line 2949 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2949 break;
2950
2951 case 6: /* Global_Statement: Import */
2952 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2953 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2954 #line 2955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2955 break;
2956
2957 case 7: /* Global_Statement: IncludePath */
2958 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2959 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2960 #line 2961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2961 break;
2962
2963 case 8: /* Global_Statement: Namespace */
2964 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2965 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2966 #line 2967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2967 break;
2968
2969 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2970 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2971 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2972 #line 2973 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2973 break;
2974
2975 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2976 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2977 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2978 #line 2979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2979 break;
2980
2981 case 11: /* Global_Statement: Data SEMICOLON */
2982 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2983 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2984 #line 2985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2985 break;
2986
2987 case 12: /* Global_Statement: Function */
2988 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2989 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2990 #line 2991 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2991 break;
2992
2993 case 13: /* Global_Statement: Script */
2994 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2995 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2996 #line 2997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2997 break;
2998
2999 case 14: /* Global_Statement: Annotated_Script */
3000 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3001 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3002 #line 3003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3003 break;
3004
3005 case 15: /* Global_Statement: Class */
3006 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3007 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3008 #line 3009 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3009 break;
3010
3011 case 16: /* Global_Statement: Annotated_Enum SEMICOLON */
3012 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3013 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3014 #line 3015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3015 break;
3016
3017 case 17: /* Global_Statement: Using SEMICOLON */
3018 #line 338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3019 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3020 #line 3021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3021 break;
3022
3023 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
3024 #line 339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3025 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3026 #line 3027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3027 break;
3028
3029 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
3030 #line 340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3031 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3032 #line 3033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3033 break;
3034
3035 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
3036 #line 341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3037 {
3038 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3039 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3040 declaration->compileErrorCatches.push_back(errorId);
3041 (*yyvalp) = declaration;}
3042 #line 3043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3043 break;
3044
3045 case 21: /* Trail_Comma_RBrace: COMMA RBRACE */
3046 #line 349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3047 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3048 #line 3049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3049 break;
3050
3051 case 22: /* Trail_Comma_RBrace: RBRACE */
3052 #line 350 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3053 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3054 #line 3055 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3055 break;
3056
3057 case 23: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
3058 #line 356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3059 {
3060 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3061 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3062 namesp->identifier = idens->componentNodes.front()->clone();
3063 if (!ParserHelper::isValidIdentifier(namesp->getName()))
3064 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
3065 auto& components = idens->componentNodes;
3066 if(components.size() > 1)
3067 for(auto it = components.begin() + 1;
3068 it != components.end(); ++it)
3069 {
3070 ASTNamespace* subsp = new ASTNamespace((*yylocp));
3071 subsp->identifier = (*it)->clone();
3072 if (!ParserHelper::isValidIdentifier(subsp->getName()))
3073 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
3074 namesp->namespaces.push_back(subsp);
3075 }
3076 delete idens;
3077 (*yyvalp) = namesp;
3078 }
3079 #line 3080 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3080 break;
3081
3082 case 24: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
3083 #line 376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3084 {
3085 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3086 auto& components = idens->componentNodes;
3087 int32_t size = components.size();
3088 if(size == 1)
3089 {
3090 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3091 namesp->identifier = components.front()->clone();
3092 namesp->location = (*yylocp);
3093 delete idens;
3094 (*yyvalp) = namesp;
3095 }
3096 else if(size == 2)
3097 {
3098 ASTNamespace* top = new ASTNamespace((*yylocp));
3099 top->identifier = components.front()->clone();
3100 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3101 namesp->identifier = components[1]->clone();
3102 namesp->location = (*yylocp);
3103 top->namespaces.push_back(namesp);
3104 delete idens;
3105 (*yyvalp) = top;
3106 }
3107 else
3108 {
3109 ASTNamespace* top = new ASTNamespace((*yylocp));
3110 top->identifier = components.front()->clone();
3111 ASTNamespace* temp = top;
3112 ASTNamespace* temp2;
3113 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3114 namesp->identifier = components.back()->clone();
3115 components.pop_back();
3116 namesp->location = (*yylocp);
3117 for(auto it = components.begin() + 1;
3118 it != components.end(); ++it)
3119 {
3120 temp2 = new ASTNamespace((*yylocp));
3121 temp->identifier = (*it)->clone();
3122 temp->namespaces.push_back(temp2);
3123 temp = temp2;
3124 }
3125 temp->namespaces.push_back(namesp);
3126 delete idens;
3127 (*yyvalp) = top;
3128 }
3129
3130 auto ns = (ASTNamespace*)(*yyvalp);
3131 if (!ParserHelper::isValidIdentifier(ns->getName()))
3132 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3133 }
3134 #line 3135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3135 break;
3136
3137 case 25: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3138 #line 429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3139 {
3140 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3141 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3142 namesp->addDeclaration(*declaration);
3143 namesp->location = (*yylocp);
3144 (*yyvalp) = namesp;}
3145 #line 3146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3146 break;
3147
3148 case 26: /* Namespace_Block_List: Namespace_Block_List Option */
3149 #line 435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3150 {
3151 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3152 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3153 namesp->options.push_back(option);
3154 namesp->location = (*yylocp);
3155 (*yyvalp) = namesp;
3156 if (!namesp->variables.empty()
3157 || !namesp->functions.empty()
3158 || !namesp->dataTypes.empty()
3159 || !namesp->scriptTypes.empty()) {
3160 yywarn("WARNING: Options should come before everything else.");}}
3161 #line 3162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3162 break;
3163
3164 case 27: /* Namespace_Block_List: Namespace_Statement */
3165 #line 446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3166 {
3167 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3168 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3169 namesp->addDeclaration(*declaration);
3170 (*yyvalp) = namesp;}
3171 #line 3172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3172 break;
3173
3174 case 28: /* Namespace_Block_List: Option */
3175 #line 451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3176 {
3177 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3178 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3179 namesp->options.push_back(option);
3180 (*yyvalp) = namesp;}
3181 #line 3182 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3182 break;
3183
3184 case 29: /* Namespace_Statement: Namespace */
3185 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3186 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3187 #line 3188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3188 break;
3189
3190 case 30: /* Namespace_Statement: DataTypeDef SEMICOLON */
3191 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3192 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3193 #line 3194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3194 break;
3195
3196 case 31: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3197 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3198 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3199 #line 3200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3200 break;
3201
3202 case 32: /* Namespace_Statement: Data SEMICOLON */
3203 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3204 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3205 #line 3206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3206 break;
3207
3208 case 33: /* Namespace_Statement: Function */
3209 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3210 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3211 #line 3212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3212 break;
3213
3214 case 34: /* Namespace_Statement: Script */
3215 #line 464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3216 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3217 #line 3218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3218 break;
3219
3220 case 35: /* Namespace_Statement: Annotated_Script */
3221 #line 465 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3222 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3223 #line 3224 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3224 break;
3225
3226 case 36: /* Namespace_Statement: Class */
3227 #line 466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3228 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3229 #line 3230 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3230 break;
3231
3232 case 37: /* Namespace_Statement: Annotated_Enum SEMICOLON */
3233 #line 467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3234 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3235 #line 3236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3236 break;
3237
3238 case 38: /* Namespace_Statement: Using SEMICOLON */
3239 #line 468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3240 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3241 #line 3242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3242 break;
3243
3244 case 39: /* Namespace_Statement: Statement_Assert SEMICOLON */
3245 #line 469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3246 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3247 #line 3248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3248 break;
3249
3250 case 40: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3251 #line 470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3252 {
3253 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3254 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3255 declaration->compileErrorCatches.push_back(errorId);
3256 (*yyvalp) = declaration;}
3257 #line 3258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3258 break;
3259
3260 case 41: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3261 #line 480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3262 {
3263 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3264 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3265 }
3266 #line 3267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3267 break;
3268
3269 case 42: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3270 #line 486 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3271 {
3272 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3273 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3274 }
3275 #line 3276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3276 break;
3277
3278 case 43: /* Import: IMPORT IMPORTSTRING */
3279 #line 495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3280 {
3281 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3282 (*yyvalp) = new ASTImportDecl(str, (*yylocp));
3283 }
3284 #line 3285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3285 break;
3286
3287 case 44: /* Import: HASH INCLUDE IMPORTSTRING */
3288 #line 499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3289 {
3290 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3291 (*yyvalp) = new ASTImportDecl(str, (*yylocp), true);
3292 }
3293 #line 3294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3294 break;
3295
3296 case 45: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3297 #line 503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3298 {
3299 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3300 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3301 ASTImportDecl* decl = new ASTImportDecl(str, (*yylocp), true);
3302 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3303 }
3304 #line 3305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3305 break;
3306
3307 case 46: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3308 #line 512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3309 {
3310 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3311 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3312 delete str;}
3313 #line 3314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3314 break;
3315
3316 case 47: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3317 #line 522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3318 {
3319 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3320 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3321 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3322 delete name;}
3323 #line 3324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3324 break;
3325
3326 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3327 #line 528 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3328 {
3329 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3330 (*yyvalp) = new ASTSetOption(
3331 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3332 delete name;}
3333 #line 3334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3334 break;
3335
3336 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3337 #line 533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3338 {
3339 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3340 (*yyvalp) = new ASTSetOption(
3341 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3342 delete name;}
3343 #line 3344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3344 break;
3345
3346 case 50: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3347 #line 538 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3348 {
3349 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3350 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3351 #line 3352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3352 break;
3353
3354 case 51: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3355 #line 541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3356 {
3357 (*yyvalp) = new ASTSetOption(
3358 "default", CompileOptionSetting::Inherit, (*yylocp));}
3359 #line 3360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3360 break;
3361
3362 case 52: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3363 #line 544 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3364 {
3365 (*yyvalp) = new ASTSetOption(
3366 "default", CompileOptionSetting::Default, (*yylocp));}
3367 #line 3368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3368 break;
3369
3370 case 53: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3371 #line 553 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3372 {
3373 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3374 }
3375 #line 3376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3376 break;
3377
3378 case 54: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3379 #line 556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3380 {
3381 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3382 }
3383 #line 3384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3384 break;
3385
3386 case 55: /* DataTypeDef: StandardDataTypedef */
3387 #line 564 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3388 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3389 #line 3390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3390 break;
3391
3392 case 56: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3393 #line 567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3394 {
3395 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3396 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3397 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3398 delete name;}
3399 #line 3400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3400 break;
3401
3402 case 57: /* DataType: DataType EMPTYBRACKETS */
3403 #line 575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3404 {
3405 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3406 ++dtype->becomeArray;
3407 (*yyvalp) = dtype;
3408 }
3409 #line 3410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3410 break;
3411
3412 case 58: /* DataType: DataType_Mods */
3413 #line 580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3414 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3415 #line 3416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3416 break;
3417
3418 case 59: /* DataType_Mods: ZCONST DataType_Base */
3419 #line 584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3420 {
3421 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3422 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3423 (*yyvalp) = dtype;
3424 }
3425 #line 3426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3426 break;
3427
3428 case 60: /* DataType_Mods: DataType_Base */
3429 #line 589 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3430 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3431 #line 3432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3432 break;
3433
3434 case 61: /* DataType_Base: ZAUTO */
3435 #line 594 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3436 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3437 #line 3438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3438 break;
3439
3440 case 62: /* DataType_Base: ZVOID */
3441 #line 595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3442 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3443 #line 3444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3444 break;
3445
3446 case 63: /* DataType_Base: UNTYPED */
3447 #line 596 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3448 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3449 #line 3450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3450 break;
3451
3452 case 64: /* DataType_Base: ZBOOL */
3453 #line 597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3454 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3455 #line 3456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3456 break;
3457
3458 case 65: /* DataType_Base: ZFLOAT */
3459 #line 598 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3460 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3461 #line 3462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3462 break;
3463
3464 case 66: /* DataType_Base: ZCHAR */
3465 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3466 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3467 #line 3468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3468 break;
3469
3470 case 67: /* DataType_Base: ZLONG */
3471 #line 600 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3472 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3473 #line 3474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3474 break;
3475
3476 case 68: /* DataType_Base: ZRGB */
3477 #line 601 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3478 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3479 #line 3480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3480 break;
3481
3482 case 69: /* DataType_Base: Identifier_List */
3483 #line 603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3484 {
3485 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3486 std::string comment = std::move(iden->doc_comment);
3487 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3488 datatype->doc_comment = std::move(comment);
3489 (*yyvalp) = datatype;
3490 }
3491 #line 3492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3492 break;
3493
3494 case 70: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3495 #line 612 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3496 {
3497 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3498 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3499 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3500 delete newName;}
3501 #line 3502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3502 break;
3503
3504 case 71: /* Data: INTERNAL Data */
3505 #line 623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3506 {
3507 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3508 if (list->internal)
3509 yyerrmsg("internal modifier used twice");
3510 list->internal = true;
3511 (*yyvalp) = list;}
3512 #line 3513 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3513 break;
3514
3515 case 72: /* Data: DataType Data_List */
3516 #line 629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3517 {
3518 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3519 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3520 list->baseType = type;
3521 if (!type->doc_comment.empty())
3522 list->doc_comment = std::move(type->doc_comment);
3523 list->location = (*yylocp);
3524 (*yyvalp) = list;}
3525 #line 3526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3526 break;
3527
3528 case 73: /* Data_List: Data_List COMMA Data_Element */
3529 #line 640 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3530 {
3531 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3532 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3533 list->addDeclaration(element);
3534 list->location = (*yylocp);
3535 (*yyvalp) = list;}
3536 #line 3537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3537 break;
3538
3539 case 74: /* Data_List: Data_Element */
3540 #line 646 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3541 {
3542 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3543 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3544 list->addDeclaration(element);
3545 if (!element->doc_comment.empty())
3546 list->doc_comment = std::move(element->doc_comment);
3547 (*yyvalp) = list;}
3548 #line 3549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3549 break;
3550
3551 case 75: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3552 #line 656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3553 {
3554 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3555 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3556 element->setInitializer(initializer);
3557 element->location = (*yylocp);
3558 (*yyvalp) = element;}
3559 #line 3560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3560 break;
3561
3562 case 76: /* Data_Element: Data_Element_Array_List */
3563 #line 662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3564 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3565 #line 3566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3566 break;
3567
3568 case 77: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3569 #line 666 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3570 {
3571 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3572 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3573 element->extraArrays.push_back(extraArray);
3574 element->location = (*yylocp);
3575 (*yyvalp) = element;}
3576 #line 3577 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3577 break;
3578
3579 case 78: /* Data_Element_Array_List: Identifier */
3580 #line 672 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3581 {
3582 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3583 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3584 element->identifier = name;
3585 if (!ParserHelper::isValidIdentifier(name->getValue()))
3586 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3587 element->doc_comment = std::move(name->doc_comment);
3588 if (!first_identifier_for_line) first_identifier_for_line = element;
3589 (*yyvalp) = element;
3590 }
3591 #line 3592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3592 break;
3593
3594 case 79: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3595 #line 685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3596 {
3597 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3598 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3599 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3600 element->identifier = name;
3601 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3602 element->setInitializer(initializer);
3603 element->baseType = type;
3604 element->location = (*yylocp);
3605 (*yyvalp) = element;}
3606 #line 3607 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3607 break;
3608
3609 case 80: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3610 #line 698 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3611 {
3612 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3613 extraArray->location = (*yylocp);
3614 (*yyvalp) = extraArray;}
3615 #line 3616 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3616 break;
3617
3618 case 81: /* Data_Element_Array_Element: EMPTYBRACKETS */
3619 #line 702 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3620 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3621 #line 3622 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3622 break;
3623
3624 case 82: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3625 #line 706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3626 {
3627 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3628 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3629 extraArray->dimensions.push_back(size);
3630 extraArray->location = (*yylocp);
3631 (*yyvalp) = extraArray;}
3632 #line 3633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3633 break;
3634
3635 case 83: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3636 #line 712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3637 {
3638 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3639 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3640 extraArray->dimensions.push_back(size);
3641 (*yyvalp) = extraArray;}
3642 #line 3643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3643 break;
3644
3645 case 84: /* Function: CONSTEXPR Function */
3646 #line 724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3647 {
3648 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3649 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3650 {
3651 func->setFlag(FUNCFLAG_INVALID);
3652 func->invalidMsg += " Duplicate `constexpr`.";
3653 }
3654 func->setFlag(FUNCFLAG_CONSTEXPR);
3655 (*yyvalp) = func;
3656 }
3657 #line 3658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3658 break;
3659
3660 case 85: /* Function: STATIC Function */
3661 #line 735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3662 {
3663 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3664 if(func->getFlag(FUNCFLAG_STATIC))
3665 {
3666 func->setFlag(FUNCFLAG_INVALID);
3667 func->invalidMsg += " Duplicate `static`.";
3668 }
3669 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3670 {
3671 func->setFlag(FUNCFLAG_INVALID);
3672 func->invalidMsg += " Constructors and destructors cannot be static.";
3673 }
3674 else func->setFlag(FUNCFLAG_STATIC);
3675 (*yyvalp) = func;
3676 }
3677 #line 3678 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3678 break;
3679
3680 case 86: /* Function: INLINE Function */
3681 #line 751 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3682 {
3683 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3684 if(func->getFlag(FUNCFLAG_INLINE))
3685 {
3686 func->setFlag(FUNCFLAG_INVALID);
3687 func->invalidMsg += " Duplicate `inline`.";
3688 }
3689 else func->setFlag(FUNCFLAG_INLINE);
3690 (*yyvalp) = func;
3691 }
3692 #line 3693 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3693 break;
3694
3695 case 87: /* Function: INTERNAL Function */
3696 #line 762 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3697 {
3698 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3699 if(func->getFlag(FUNCFLAG_INTERNAL))
3700 {
3701 func->setFlag(FUNCFLAG_INVALID);
3702 func->invalidMsg += " Duplicate `internal`.";
3703 }
3704 if(func->block)
3705 {
3706 func->setFlag(FUNCFLAG_INVALID);
3707 func->invalidMsg += " Internal function must not have a body.";
3708 }
3709 func->setFlag(FUNCFLAG_INTERNAL);
3710 func->prototype = false;
3711 (*yyvalp) = func;
3712 }
3713 #line 3714 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3714 break;
3715
3716 case 88: /* Function: DataType Function_Typeless */
3717 #line 778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3718 {
3719 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3720 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3721 if (!returnType->doc_comment.empty())
3722 func->doc_comment = std::move(returnType->doc_comment);
3723 func->returnType = returnType;
3724 (*yyvalp) = func;}
3725 #line 3726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3726 break;
3727
3728 case 89: /* Function_Typeless: Function_Heading Statement_Block */
3729 #line 789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3730 {
3731 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3732 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3733 (*yyvalp) = func;}
3734 #line 3735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3735 break;
3736
3737 case 90: /* Function_Typeless: Function_Heading SEMICOLON */
3738 #line 793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3739 {
3740 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3741 func->prototype = true;
3742 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3743 (*yyvalp) = func;}
3744 #line 3745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3745 break;
3746
3747 case 91: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3748 #line 798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3749 {
3750 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3751 func->prototype = true;
3752 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3753 (*yyvalp) = func;}
3754 #line 3755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3755 break;
3756
3757 case 92: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3758 #line 806 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3759 {
3760 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3761 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3762 func->identifier = iden;
3763 func->location = (*yylocp);
3764 func->doc_comment = std::move(iden->doc_comment);
3765 (*yyvalp) = func;}
3766 #line 3767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3767 break;
3768
3769 case 93: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3770 #line 814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3771 {
3772 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3773 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3774 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3775 func->identifier = iden;
3776 func->templates.swap(template_list->strings);
3777 delete template_list;
3778 func->location = (*yylocp);
3779 func->doc_comment = std::move(iden->doc_comment);
3780 (*yyvalp) = func;}
3781 #line 3782 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3782 break;
3783
3784 case 94: /* FunctionTemplateList: Identifier */
3785 #line 827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3786 {
3787 ASTStringList* list = new ASTStringList((*yylocp));
3788 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3789 list->strings.push_back(templ);
3790 (*yyvalp) = list;}
3791 #line 3792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3792 break;
3793
3794 case 95: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3795 #line 832 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3796 {
3797 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3798 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3799 list->location = (*yylocp);
3800 list->strings.push_back(templ);
3801 (*yyvalp) = list;}
3802 #line 3803 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3803 break;
3804
3805 case 96: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3806 #line 840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3807 {
3808 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3809 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3810 push_front(func->parameters, param);
3811 func->location = (*yylocp);
3812 (*yyvalp) = func;}
3813 #line 3814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3814 break;
3815
3816 case 97: /* Function_Parameters_List: Function_Parameters_Element */
3817 #line 846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3818 {
3819 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3820 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3821 push_front(func->parameters, param);
3822 (*yyvalp) = func;}
3823 #line 3824 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3824 break;
3825
3826 case 98: /* Function_Parameters_List: Function_OptParams_List */
3827 #line 851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3828 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3829 #line 3830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3830 break;
3831
3832 case 99: /* Function_Parameters_List: Function_VarArg_Element */
3833 #line 852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3834 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3835 #line 3836 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3836 break;
3837
3838 case 100: /* Function_Parameters_List: %empty */
3839 #line 853 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3840 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3841 #line 3842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3842 break;
3843
3844 case 101: /* Function_Parameters_Element: DataType Identifier */
3845 #line 857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3846 {
3847 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3848 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3849 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3850 element->identifier = name;
3851 element->baseType = type;
3852 (*yyvalp) = element;}
3853 #line 3854 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3854 break;
3855
3856 case 102: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression COMMA Function_OptParams_List */
3857 #line 867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3858 {
3859 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3860 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3861 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3862 push_front(func->parameters, param);
3863 push_front(func->optparams, val);
3864 func->location = (*yylocp);
3865 (*yyvalp) = func;}
3866 #line 3867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3867 break;
3868
3869 case 103: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression */
3870 #line 875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3871 {
3872 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3873 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3874 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3875 push_front(func->parameters, param);
3876 push_front(func->optparams, val);
3877 (*yyvalp) = func;}
3878 #line 3879 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3879 break;
3880
3881 case 104: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3882 #line 885 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3883 {
3884 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3885 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3886 func->setFlag(FUNCFLAG_VARARGS);
3887 (*yyvalp) = func;}
3888 #line 3889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3889 break;
3890
3891 case 105: /* Class_Ident: IDENTIFIER */
3892 #line 894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3893 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3894 #line 3895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3895 break;
3896
3897 case 106: /* Class: ZCLASS Class_Ident Class_Block */
3898 #line 897 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3899 {
3900 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3901 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3902 user_class->location = name->location;
3903 user_class->identifier = name;
3904 user_class->doc_comment = std::move(name->doc_comment);
3905 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3906 (*yyvalp) = user_class;}
3907 #line 3908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3908 break;
3909
3910 case 107: /* Class_Block: LBRACE Class_Block_List RBRACE */
3911 #line 908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3912 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3913 #line 3914 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3914 break;
3915
3916 case 108: /* Class_Block: LBRACE RBRACE */
3917 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3918 {(*yyvalp) = new ASTClass((*yylocp));}
3919 #line 3920 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3920 break;
3921
3922 case 109: /* Class_Block_List: Class_Block_List Class_Block_Element */
3923 #line 913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3924 {
3925 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3926 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3927 user_class->addDeclaration(*declaration);
3928 user_class->location = (*yylocp);
3929 (*yyvalp) = user_class;}
3930 #line 3931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3931 break;
3932
3933 case 110: /* Class_Block_List: Class_Block_List Option */
3934 #line 919 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3935 {
3936 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3937 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3938 user_class->options.push_back(option);
3939 user_class->location = (*yylocp);
3940 (*yyvalp) = user_class;
3941 if (!user_class->variables.empty()
3942 || !user_class->functions.empty()
3943 || !user_class->types.empty()) {
3944 yywarn("WARNING: Options should come before everything else.");}}
3945 #line 3946 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3946 break;
3947
3948 case 111: /* Class_Block_List: Class_Block_List Class_Constructor */
3949 #line 929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3950 {
3951 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3952 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3953 user_class->constructors.push_back(func);
3954 (*yyvalp) = user_class;}
3955 #line 3956 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3956 break;
3957
3958 case 112: /* Class_Block_List: Class_Block_List Class_Destructor */
3959 #line 934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3960 {
3961 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3962 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3963 if(user_class->destructor)
3964 {
3965 auto const& loc = func->location;
3966 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3967 delete func;
3968 }
3969 else user_class->destructor = func;
3970 (*yyvalp) = user_class;}
3971 #line 3972 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3972 break;
3973
3974 case 113: /* Class_Block_List: Class_Block_Element */
3975 #line 945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3976 {
3977 ASTClass* user_class = new ASTClass((*yylocp));
3978 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3979 user_class->addDeclaration(*declaration);
3980 (*yyvalp) = user_class;}
3981 #line 3982 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3982 break;
3983
3984 case 114: /* Class_Block_List: Option */
3985 #line 950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3986 {
3987 ASTClass* user_class = new ASTClass((*yylocp));
3988 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3989 user_class->options.push_back(option);
3990 (*yyvalp) = user_class;}
3991 #line 3992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3992 break;
3993
3994 case 115: /* Class_Block_List: Class_Constructor */
3995 #line 955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3996 {
3997 ASTClass* user_class = new ASTClass((*yylocp));
3998 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3999 user_class->constructors.push_back(func);
4000 (*yyvalp) = user_class;}
4001 #line 4002 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4002 break;
4003
4004 case 116: /* Class_Block_List: Class_Destructor */
4005 #line 960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4006 {
4007 ASTClass* user_class = new ASTClass((*yylocp));
4008 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4009 if(user_class->destructor)
4010 {
4011 auto const& loc = func->location;
4012 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
4013 delete func;
4014 }
4015 else user_class->destructor = func;
4016 (*yyvalp) = user_class;}
4017 #line 4018 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4018 break;
4019
4020 case 117: /* Class_Constructor: INTERNAL Class_Constructor */
4021 #line 974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4022 {
4023 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4024 if(func->getFlag(FUNCFLAG_INTERNAL))
4025 {
4026 func->setFlag(FUNCFLAG_INVALID);
4027 func->invalidMsg += " Duplicate `internal`.";
4028 }
4029 else func->setFlag(FUNCFLAG_INTERNAL);
4030 func->prototype = false;
4031 (*yyvalp) = func;}
4032 #line 4033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4033 break;
4034
4035 case 118: /* Class_Constructor: Function_Typeless */
4036 #line 984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4037 {
4038 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4039 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4040 func->returnType = returnType;
4041 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4042 if(func->getFlag(FUNCFLAG_STATIC))
4043 {
4044 func->setFlag(FUNCFLAG_INVALID);
4045 func->invalidMsg += " Constructors and destructors cannot be static.";
4046 }
4047 (*yyvalp) = func;}
4048 #line 4049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4049 break;
4050
4051 case 119: /* Class_Destructor: BITNOT Function_Typeless */
4052 #line 997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4053 {
4054 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4055 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4056 func->returnType = returnType;
4057 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4058 if(func->getFlag(FUNCFLAG_STATIC))
4059 {
4060 func->setFlag(FUNCFLAG_INVALID);
4061 func->invalidMsg += " Constructors and destructors cannot be static.";
4062 }
4063 (*yyvalp) = func;}
4064 #line 4065 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4065 break;
4066
4067 case 120: /* Class_Data: Data */
4068 #line 1011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4069 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4070 #line 4071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4071 break;
4072
4073 case 121: /* Class_Block_Element: Class_Data SEMICOLON */
4074 #line 1015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4075 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4076 #line 4077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4077 break;
4078
4079 case 122: /* Class_Block_Element: Function */
4080 #line 1016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4081 {
4082 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4083 func->setFlag(FUNCFLAG_CLASSFUNC);
4084 (*yyvalp) = func;}
4085 #line 4086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4086 break;
4087
4088 case 123: /* Class_Block_Element: DataTypeDef SEMICOLON */
4089 #line 1020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4090 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4091 #line 4092 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4092 break;
4093
4094 case 124: /* Class_Block_Element: Annotated_Enum SEMICOLON */
4095 #line 1021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4096 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4097 #line 4098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4098 break;
4099
4100 case 125: /* Class_Block_Element: Using SEMICOLON */
4101 #line 1022 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4102 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4103 #line 4104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4104 break;
4105
4106 case 126: /* Class_Block_Element: Statement_Assert SEMICOLON */
4107 #line 1023 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4108 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4109 #line 4110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4110 break;
4111
4112 case 127: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4113 #line 1024 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4114 {
4115 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4116 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4117 declaration->compileErrorCatches.push_back(errorId);
4118 (*yyvalp) = declaration;}
4119 #line 4120 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4120 break;
4121
4122 case 128: /* Annotated_Script: Annotation_List Script */
4123 #line 1035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4124 {
4125 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4126 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4127 handle_annotations(list, [&](AnnotData& data)
4128 {
4129 auto& key = data.key;
4130 if(key == "Author")
4131 {
4132 if(annot_type_check(ANNTY_STR, data))
4133 {
4134 annot_trunc_str(data.unescaped_val, 255);
4135 script->metadata.author = data.unescaped_val;
4136 }
4137 return true;
4138 }
4139 else if(key == "InitScript")
4140 {
4141 if(annot_type_check(ANNTY_INT, data))
4142 script->init_weight = data.intval.getZLong();
4143 return true;
4144 }
4145 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4146 {
4147 byte c = key[4]-'0';
4148 if(key.size() == 6)
4149 c = (c*10)+key[5]-'0';
4150 if(c < 16)
4151 {
4152 if(annot_type_check(ANNTY_STR, data))
4153 {
4154 annot_trunc_str(data.unescaped_val, 255);
4155 script->metadata.usrflags[c] = data.unescaped_val;
4156 }
4157 return true;
4158 }
4159 }
4160 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4161 {
4162 byte c = key[8]-'0';
4163 if(key.size() == 10)
4164 c = (c*10)+key[9]-'0';
4165 if(c < 16)
4166 {
4167 if(annot_type_check(ANNTY_STR, data))
4168 {
4169 annot_trunc_str(data.val, 65535);
4170 script->metadata.usrflags_help[c] = data.val;
4171 }
4172 return true;
4173 }
4174 }
4175 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4176 {
4177 byte c = key[5]-'0';
4178 if(c < 8)
4179 {
4180 if(annot_type_check(ANNTY_STR, data))
4181 {
4182 annot_trunc_str(data.unescaped_val, 255);
4183 script->metadata.initd[c] = data.unescaped_val;
4184 }
4185 return true;
4186 }
4187 }
4188 else if(key.size() == 10)
4189 {
4190 byte c = key[9]-'0';
4191 if(!key.compare(0,9,"InitDType"))
4192 {
4193 if(c < 8)
4194 {
4195 if(annot_type_check(ANNTY_STR, data))
4196 {
4197 int8_t v = -1;
4198 upperstr(data.val);
4199 if(data.val.size() == 2 && data.val[0] == 'L')
4200 {
4201 switch(data.val[1])
4202 {
4203 case 'D': v = nswapLDEC; break;
4204 case 'H': v = nswapLHEX; break;
4205 }
4206 }
4207 else if(data.val.size() == 1)
4208 {
4209 switch(data.val[0])
4210 {
4211 case 'D': v = nswapDEC; break;
4212 case 'H': v = nswapHEX; break;
4213 case 'B': v = nswapBOOL; break;
4214 }
4215 }
4216 if(unsigned(v) < nswapMAX)
4217 script->metadata.initd_type[c] = v;
4218 else if(data.val == "-1")
4219 script->metadata.initd_type[c] = -1;
4220 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4221 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4222 }
4223 return true;
4224 }
4225 }
4226 else if(!key.compare(0,9,"InitDHelp"))
4227 {
4228 if(c < 8)
4229 {
4230 if(annot_type_check(ANNTY_STR, data))
4231 {
4232 annot_trunc_str(data.val, 65535);
4233 script->metadata.initd_help[c] = data.val;
4234 }
4235 return true;
4236 }
4237 }
4238 else if(!key.compare(0,9,"Attribute"))
4239 {
4240 if(c < 10) // 1 digit number
4241 {
4242 if(annot_type_check(ANNTY_STR, data))
4243 {
4244 annot_trunc_str(data.unescaped_val, 255);
4245 script->metadata.attributes[c] = data.unescaped_val;
4246 }
4247 return true;
4248 }
4249 }
4250 else if(!key.compare(0,9,"Attribyte"))
4251 {
4252 if(c < 8)
4253 {
4254 if(annot_type_check(ANNTY_STR, data))
4255 {
4256 annot_trunc_str(data.unescaped_val, 255);
4257 script->metadata.attributes[8+c] = data.unescaped_val;
4258 }
4259 return true;
4260 }
4261 }
4262 }
4263 else if(key.size() == 11)
4264 {
4265 if(!key.compare(0,9,"Attribute"))
4266 {
4267 if (byte(key[9])-'0' < 10 && byte(key[10])-'0' < 10)
4268 {
4269 byte c = atoi(key.c_str()+9);
4270 if (c < NUM_ZMETA_ATTRIBUTES)
4271 {
4272 if(annot_type_check(ANNTY_STR, data))
4273 {
4274 annot_trunc_str(data.unescaped_val, 255);
4275 script->metadata.attributes[c] = data.unescaped_val;
4276 }
4277 return true;
4278 }
4279 }
4280 }
4281 else if (!key.compare(0,10,"Attrishort"))
4282 {
4283 byte c = key[10]-'0';
4284 if(c < 8)
4285 {
4286 if(annot_type_check(ANNTY_STR, data))
4287 {
4288 annot_trunc_str(data.unescaped_val, 255);
4289 script->metadata.attributes[16+c] = data.unescaped_val;
4290 }
4291 return true;
4292 }
4293 }
4294 }
4295 else if(key.size() == 14)
4296 {
4297 if(!key.compare(0,13,"AttributeHelp"))
4298 {
4299 byte c = key[13]-'0';
4300 if(c < 10) // 1 digit number
4301 {
4302 if(annot_type_check(ANNTY_STR, data))
4303 {
4304 annot_trunc_str(data.val, 65535);
4305 script->metadata.attributes_help[c] = data.val;
4306 }
4307 return true;
4308 }
4309 }
4310 else if(!key.compare(0,13,"AttribyteHelp"))
4311 {
4312 byte c = key[13]-'0';
4313 if(c < 8)
4314 {
4315 if(annot_type_check(ANNTY_STR, data))
4316 {
4317 annot_trunc_str(data.val, 65535);
4318 script->metadata.attributes_help[8+c] = data.val;
4319 }
4320 return true;
4321 }
4322 }
4323 }
4324 else if(key.size() == 15)
4325 {
4326 if(!key.compare(0,13,"AttributeHelp"))
4327 {
4328 if (byte(key[13])-'0' < 10 && byte(key[14])-'0' < 10)
4329 {
4330 byte c = atoi(key.c_str()+13);
4331 if(c < NUM_ZMETA_ATTRIBUTES)
4332 {
4333 if(annot_type_check(ANNTY_STR, data))
4334 {
4335 annot_trunc_str(data.val, 65535);
4336 script->metadata.attributes_help[c] = data.val;
4337 }
4338 return true;
4339 }
4340 }
4341 }
4342 else if (!key.compare(0,14,"AttrishortHelp"))
4343 {
4344 byte c = key[14]-'0';
4345 if(c < 8)
4346 {
4347 if(annot_type_check(ANNTY_STR, data))
4348 {
4349 annot_trunc_str(data.val, 65535);
4350 script->metadata.attributes_help[16+c] = data.val;
4351 }
4352 return true;
4353 }
4354 }
4355 }
4356 return false;
4357 });
4358 (*yyvalp) = script;}
4359 #line 4360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4360 break;
4361
4362 case 129: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4363 #line 1273 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4364 {
4365 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4366 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4367 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4368 script->identifier = name;
4369 script->type = type;
4370 script->metadata.script_name = name->getValue();
4371 script->location = (*yylocp);
4372 (*yyvalp) = script;}
4373 #line 4374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4374 break;
4375
4376 case 130: /* Script_Type: IDENTIFIER */
4377 #line 1286 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4378 {
4379 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4380 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4381 delete name;}
4382 #line 4383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4383 break;
4384
4385 case 131: /* Script_Block: LBRACE Script_Block_List RBRACE */
4386 #line 1293 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4387 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4388 #line 4389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4389 break;
4390
4391 case 132: /* Script_Block: LBRACE RBRACE */
4392 #line 1294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4393 {(*yyvalp) = new ASTScript((*yylocp));}
4394 #line 4395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4395 break;
4396
4397 case 133: /* Script_Block_List: Script_Block_List Script_Block_Element */
4398 #line 1298 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4399 {
4400 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4401 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4402 script->addDeclaration(*declaration);
4403 script->location = (*yylocp);
4404 (*yyvalp) = script;}
4405 #line 4406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4406 break;
4407
4408 case 134: /* Script_Block_List: Script_Block_List Option */
4409 #line 1304 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4410 {
4411 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4412 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4413 script->options.push_back(option);
4414 script->location = (*yylocp);
4415 (*yyvalp) = script;
4416 if (!script->variables.empty()
4417 || !script->functions.empty()
4418 || !script->types.empty()) {
4419 yywarn("WARNING: Options should come before everything else.");}}
4420 #line 4421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4421 break;
4422
4423 case 135: /* Script_Block_List: Script_Block_Element */
4424 #line 1314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4425 {
4426 ASTScript* script = new ASTScript((*yylocp));
4427 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4428 script->addDeclaration(*declaration);
4429 (*yyvalp) = script;}
4430 #line 4431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4431 break;
4432
4433 case 136: /* Script_Block_List: Option */
4434 #line 1319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4435 {
4436 ASTScript* script = new ASTScript((*yylocp));
4437 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4438 script->options.push_back(option);
4439 (*yyvalp) = script;}
4440 #line 4441 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4441 break;
4442
4443 case 137: /* Script_Block_Element: Data SEMICOLON */
4444 #line 1327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4445 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4446 #line 4447 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4447 break;
4448
4449 case 138: /* Script_Block_Element: Function */
4450 #line 1328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4451 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4452 #line 4453 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4453 break;
4454
4455 case 139: /* Script_Block_Element: DataTypeDef SEMICOLON */
4456 #line 1329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4457 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4458 #line 4459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4459 break;
4460
4461 case 140: /* Script_Block_Element: Annotated_Enum SEMICOLON */
4462 #line 1330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4463 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4464 #line 4465 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4465 break;
4466
4467 case 141: /* Script_Block_Element: Using SEMICOLON */
4468 #line 1331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4469 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4470 #line 4471 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4471 break;
4472
4473 case 142: /* Script_Block_Element: Statement_Assert SEMICOLON */
4474 #line 1332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4475 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4476 #line 4477 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4477 break;
4478
4479 case 143: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4480 #line 1333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4481 {
4482 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4483 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4484 declaration->compileErrorCatches.push_back(errorId);
4485 (*yyvalp) = declaration;}
4486 #line 4487 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4487 break;
4488
4489 case 144: /* Annotation_List: Annotation_List COMMA Annotation */
4490 #line 1341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4491 {
4492 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4493 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4494 if (list->doc_comment.empty())
4495 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4496 (*yyvalp) = list;}
4497 #line 4498 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4498 break;
4499
4500 case 145: /* Annotation_List: Annotation */
4501 #line 1347 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4502 {
4503 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4504 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4505 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4506 (*yyvalp) = list;}
4507 #line 4508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4508 break;
4509
4510 case 146: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4511 #line 1355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4512 {
4513 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4514 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4515 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4516 a->doc_comment = std::move(key->doc_comment);
4517 (*yyvalp) = a;}
4518 #line 4519 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4519 break;
4520
4521 case 147: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4522 #line 1361 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4523 {
4524 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4525 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4526 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4527 a->doc_comment = std::move(key->doc_comment);
4528 (*yyvalp) = a;}
4529 #line 4530 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4530 break;
4531
4532 case 148: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4533 #line 1367 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4534 {
4535 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4536 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4537 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4538 a->doc_comment = std::move(key->doc_comment);
4539 (*yyvalp) = a;}
4540 #line 4541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4541 break;
4542
4543 case 149: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4544 #line 1373 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4545 {
4546 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4547 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4548 val->negative = !val->negative;
4549 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4550 a->doc_comment = std::move(key->doc_comment);
4551 (*yyvalp) = a;}
4552 #line 4553 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4553 break;
4554
4555 case 150: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4556 #line 1380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4557 {
4558 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4559 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4560 val->negative = !val->negative;
4561 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4562 a->doc_comment = std::move(key->doc_comment);
4563 (*yyvalp) = a;}
4564 #line 4565 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4565 break;
4566
4567 case 151: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4568 #line 1387 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4569 {
4570 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4571 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4572 a->doc_comment = std::move(key->doc_comment);
4573 (*yyvalp) = a;}
4574 #line 4575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4575 break;
4576
4577 case 152: /* Block_Statement: Statement */
4578 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4579 {
4580 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4581 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4582 {
4583 (*yyvalp) = existing_block;
4584 }
4585 else
4586 {
4587 ASTBlock* block = new ASTBlock((*yylocp));
4588 block->statements.push_back(stmt);
4589 (*yyvalp) = block;
4590 }
4591 }
4592 #line 4593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4593 break;
4594
4595 case 153: /* Statement: Data SEMICOLON */
4596 #line 1415 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4597 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4598 #line 4599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4599 break;
4600
4601 case 154: /* Statement: DataTypeDef SEMICOLON */
4602 #line 1416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4603 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4604 #line 4605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4605 break;
4606
4607 case 155: /* Statement: Annotated_Enum SEMICOLON */
4608 #line 1417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4609 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4610 #line 4611 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4611 break;
4612
4613 case 156: /* Statement: Using SEMICOLON */
4614 #line 1418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4615 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4616 #line 4617 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4617 break;
4618
4619 case 157: /* Statement: Statement_Expression SEMICOLON */
4620 #line 1420 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4621 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4622 #line 4623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4623 break;
4624
4625 case 158: /* Statement: Statement_Block */
4626 #line 1421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4627 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4628 #line 4629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4629 break;
4630
4631 case 159: /* Statement: Statement_If */
4632 #line 1422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4633 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4634 #line 4635 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4635 break;
4636
4637 case 160: /* Statement: Statement_Switch */
4638 #line 1423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4639 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4640 #line 4641 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4641 break;
4642
4643 case 161: /* Statement: Statement_For */
4644 #line 1424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4645 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4646 #line 4647 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4647 break;
4648
4649 case 162: /* Statement: Annotated_Loop */
4650 #line 1425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4651 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4652 #line 4653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4653 break;
4654
4655 case 163: /* Statement: Statement_While */
4656 #line 1426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4657 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4658 #line 4659 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4659 break;
4660
4661 case 164: /* Statement: Statement_Do */
4662 #line 1427 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4663 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4664 #line 4665 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4665 break;
4666
4667 case 165: /* Statement: Statement_Repeat */
4668 #line 1428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4669 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4670 #line 4671 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4671 break;
4672
4673 case 166: /* Statement: Statement_Return SEMICOLON */
4674 #line 1429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4675 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4676 #line 4677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4677 break;
4678
4679 case 167: /* Statement: BREAK SEMICOLON */
4680 #line 1430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4681 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4682 #line 4683 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4683 break;
4684
4685 case 168: /* Statement: BREAK NUMBER SEMICOLON */
4686 #line 1431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4687 {
4688 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4689 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4690 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4691 }
4692 #line 4693 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4693 break;
4694
4695 case 169: /* Statement: CONTINUE SEMICOLON */
4696 #line 1436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4697 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4698 #line 4699 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4699 break;
4700
4701 case 170: /* Statement: CONTINUE NUMBER SEMICOLON */
4702 #line 1437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4703 {
4704 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4705 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4706 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4707 }
4708 #line 4709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4709 break;
4710
4711 case 171: /* Statement: SEMICOLON */
4712 #line 1442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4713 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4714 #line 4715 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4715 break;
4716
4717 case 172: /* Statement: Statement_CompileError SEMICOLON */
4718 #line 1443 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4719 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4720 #line 4721 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4721 break;
4722
4723 case 173: /* Statement: Statement_Assert SEMICOLON */
4724 #line 1444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4725 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4726 #line 4727 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4727 break;
4728
4729 case 174: /* Statement_NoSemicolon: Data */
4730 #line 1449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4731 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4732 #line 4733 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4733 break;
4734
4735 case 175: /* Statement_NoSemicolon: DataTypeDef */
4736 #line 1450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4737 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4738 #line 4739 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4739 break;
4740
4741 case 176: /* Statement_NoSemicolon: Annotated_Enum */
4742 #line 1451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4743 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4744 #line 4745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4745 break;
4746
4747 case 177: /* Statement_NoSemicolon: Statement_Expression */
4748 #line 1453 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4749 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4750 #line 4751 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4751 break;
4752
4753 case 178: /* Statement_NoSemicolon: Statement_Block */
4754 #line 1454 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4755 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4756 #line 4757 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4757 break;
4758
4759 case 179: /* Statement_NoSemicolon: Statement_If */
4760 #line 1455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4761 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4762 #line 4763 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4763 break;
4764
4765 case 180: /* Statement_NoSemicolon: Statement_Switch */
4766 #line 1456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4767 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4768 #line 4769 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4769 break;
4770
4771 case 181: /* Statement_NoSemicolon: Statement_For */
4772 #line 1457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4773 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4774 #line 4775 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4775 break;
4776
4777 case 182: /* Statement_NoSemicolon: Annotated_Loop */
4778 #line 1458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4779 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4780 #line 4781 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4781 break;
4782
4783 case 183: /* Statement_NoSemicolon: Statement_While */
4784 #line 1459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4785 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4786 #line 4787 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4787 break;
4788
4789 case 184: /* Statement_NoSemicolon: Statement_Do */
4790 #line 1460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4791 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4792 #line 4793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4793 break;
4794
4795 case 185: /* Statement_NoSemicolon: Statement_Return */
4796 #line 1461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4797 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4798 #line 4799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4799 break;
4800
4801 case 186: /* Statement_NoSemicolon: BREAK */
4802 #line 1462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4803 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4804 #line 4805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4805 break;
4806
4807 case 187: /* Statement_NoSemicolon: BREAK NUMBER */
4808 #line 1463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4809 {
4810 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4811 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4812 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4813 }
4814 #line 4815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4815 break;
4816
4817 case 188: /* Statement_NoSemicolon: CONTINUE */
4818 #line 1468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4819 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4820 #line 4821 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4821 break;
4822
4823 case 189: /* Statement_NoSemicolon: CONTINUE NUMBER */
4824 #line 1469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4825 {
4826 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4827 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4828 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4829 }
4830 #line 4831 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4831 break;
4832
4833 case 190: /* Statement_NoSemicolon: %empty */
4834 #line 1474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4835 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4836 #line 4837 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4837 break;
4838
4839 case 191: /* Statement_NoSemicolon: Statement_CompileError */
4840 #line 1475 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4841 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4842 #line 4843 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4843 break;
4844
4845 case 192: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4846 #line 1479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4847 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4848 #line 4849 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4849 break;
4850
4851 case 193: /* Statement_Block: LBRACE RBRACE */
4852 #line 1480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4853 {(*yyvalp) = new ASTBlock((*yylocp));}
4854 #line 4855 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4855 break;
4856
4857 case 194: /* Statement_Block_List: Statement_Block_List Statement */
4858 #line 1484 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4859 {
4860 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4861 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4862 block->statements.push_back(stmt);
4863 (*yyvalp) = block;}
4864 #line 4865 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4865 break;
4866
4867 case 195: /* Statement_Block_List: Statement_Block_List Option */
4868 #line 1489 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4869 {
4870 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4871 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4872 block->options.push_back(option);
4873 (*yyvalp) = block;
4874 if (!block->statements.empty()) {
4875 yywarn("WARNING: Options should come before everything else.");}}
4876 #line 4877 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4877 break;
4878
4879 case 196: /* Statement_Block_List: Statement */
4880 #line 1496 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4881 {
4882 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4883 ASTBlock* block = new ASTBlock((*yylocp));
4884 block->statements.push_back(stmt);
4885 (*yyvalp) = block;}
4886 #line 4887 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4887 break;
4888
4889 case 197: /* Statement_Block_List: Option */
4890 #line 1501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4891 {
4892 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4893 ASTBlock* block = new ASTBlock((*yylocp));
4894 block->options.push_back(option);
4895 (*yyvalp) = block;}
4896 #line 4897 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4897 break;
4898
4899 case 198: /* Statement_If: IF If_Body */
4900 #line 1509 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4901 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4902 #line 4903 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4903 break;
4904
4905 case 199: /* Statement_If: UNLESS If_Body */
4906 #line 1510 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4907 {
4908 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4909 stmt->invert();
4910 (*yyvalp) = stmt;
4911 }
4912 #line 4913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4913 break;
4914
4915 case 200: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4916 #line 1518 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4917 {
4918 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4919 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4920 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4921 #line 4922 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4922 break;
4923
4924 case 201: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4925 #line 1522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4926 {
4927 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4928 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4929 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4930 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4931 #line 4932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4932 break;
4933
4934 case 202: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4935 #line 1527 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4936 {
4937 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4938 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4939 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4940 #line 4941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4941 break;
4942
4943 case 203: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4944 #line 1531 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4945 {
4946 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4947 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4948 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4949 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4950 #line 4951 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4951 break;
4952
4953 case 204: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4954 #line 1539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4955 {
4956 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4957 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4958 sw->key = key;
4959 (*yyvalp) = sw;}
4960 #line 4961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4961 break;
4962
4963 case 205: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4964 #line 1546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4965 {
4966 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4967 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4968 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4969 cases->block = block;
4970 sw->cases.push_back(cases);
4971 (*yyvalp) = sw;}
4972 #line 4973 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4973 break;
4974
4975 case 206: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4976 #line 1553 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4977 {
4978 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4979 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4980 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4981 cases->block = block;
4982 sw->cases.push_back(cases);
4983 (*yyvalp) = sw;}
4984 #line 4985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4985 break;
4986
4987 case 207: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4988 #line 1563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4989 {
4990 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4991 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4992 cases->cases.push_back(key);
4993 (*yyvalp) = cases;}
4994 #line 4995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4995 break;
4996
4997 case 208: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4998 #line 1568 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4999 {
5000 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5001 cases->isDefault = true;
5002 (*yyvalp) = cases;}
5003 #line 5004 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5004 break;
5005
5006 case 209: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
5007 #line 1572 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5008 {
5009 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5010 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5011 cases->ranges.push_back(range);
5012 (*yyvalp) = cases;}
5013 #line 5014 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5014 break;
5015
5016 case 210: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
5017 #line 1577 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5018 {
5019 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5020 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
5021 delete rawstring;
5022 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5023 cases->str_cases.push_back(key);
5024 (*yyvalp) = cases;}
5025 #line 5026 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5026 break;
5027
5028 case 211: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
5029 #line 1584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5030 {
5031 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5032 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5033 cases->cases.push_back(key);
5034 (*yyvalp) = cases;}
5035 #line 5036 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5036 break;
5037
5038 case 212: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
5039 #line 1589 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5040 {
5041 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5042 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5043 cases->ranges.push_back(range);
5044 (*yyvalp) = cases;}
5045 #line 5046 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5046 break;
5047
5048 case 213: /* Statement_Switch_Cases: CASE CASESTRING COLON */
5049 #line 1594 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5050 {
5051 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5052 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5053 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
5054 delete rawstring;
5055 cases->str_cases.push_back(key);
5056 (*yyvalp) = cases;}
5057 #line 5058 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5058 break;
5059
5060 case 214: /* Statement_Switch_Cases: DEFAULT COLON */
5061 #line 1601 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5062 {
5063 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5064 cases->isDefault = true;
5065 (*yyvalp) = cases;}
5066 #line 5067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5067 break;
5068
5069 case 215: /* Statement_For: Statement_For_Standard */
5070 #line 1608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5071 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5072 #line 5073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5073 break;
5074
5075 case 216: /* Statement_For: Statement_For_Each */
5076 #line 1609 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5077 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5078 #line 5079 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5079 break;
5080
5081 case 217: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5082 #line 1613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5083 {
5084 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5085 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5086 (*yyvalp) = list;
5087 }
5088 #line 5089 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5089 break;
5090
5091 case 218: /* Statement_CommaList: Statement_NoSemicolon */
5092 #line 1618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5093 {
5094 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5095 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5096 (*yyvalp) = list;
5097 }
5098 #line 5099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5099 break;
5100
5101 case 219: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5102 #line 1631 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5103 {
5104 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5105 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5106 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5107 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5108 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5109 }
5110 #line 5111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5111 break;
5112
5113 case 220: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5114 #line 1643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5115 {
5116 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5117 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5118 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5119 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5120 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5121 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5122 }
5123 #line 5124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5124 break;
5125
5126 case 221: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5127 #line 1656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5128 {
5129 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5130 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5131 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5132
5133 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5134 }
5135 #line 5136 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5136 break;
5137
5138 case 222: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5139 #line 1665 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5140 {
5141 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5142 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5143 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5144 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5145
5146 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5147 }
5148 #line 5149 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5149 break;
5150
5151 case 223: /* Annotated_Loop: Annotation_List Statement_Loop */
5152 #line 1676 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5153 {
5154 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5155 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5156 handle_annotations(list, [&](AnnotData& data)
5157 {
5158 auto& key = data.key;
5159 if(key == "AlwaysRunEndpoint")
5160 {
5161 if(annot_type_check(ANNTY_STR, data))
5162 {
5163 if(data.strval == "off")
5164 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5165 else if(data.strval == "int")
5166 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5167 else if(data.strval == "long" || data.strval == "float")
5168 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5169 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5170 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5171 }
5172 return true;
5173 }
5174 return false;
5175 });
5176 (*yyvalp) = loop;}
5177 #line 5178 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5178 break;
5179
5180 case 224: /* Annotated_Loop: Statement_Loop */
5181 #line 1700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5182 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5183 #line 5184 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5184 break;
5185
5186 case 225: /* Statement_Loop: Statement_Loop_Inf */
5187 #line 1704 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5188 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5189 #line 5190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5190 break;
5191
5192 case 226: /* Statement_Loop: Statement_Loop_Range */
5193 #line 1705 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5194 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5195 #line 5196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5196 break;
5197
5198 case 227: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5199 #line 1710 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5200 {
5201 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5202 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5203 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5204 }
5205 #line 5206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5206 break;
5207
5208 case 228: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5209 #line 1718 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5210 {
5211 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5212 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5213 loop->elseBlock = elseblock;
5214 (*yyvalp) = loop;
5215 }
5216 #line 5217 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5217 break;
5218
5219 case 229: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5220 #line 1724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5221 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5222 #line 5223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5223 break;
5224
5225 case 230: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5226 #line 1729 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5227 {
5228 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5229 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5230 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5231 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5232 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5233 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5234 }
5235 #line 5236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5236 break;
5237
5238 case 231: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5239 #line 1738 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5240 {
5241 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5242 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5243 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5244 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5245 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5246 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5247 }
5248 #line 5249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5249 break;
5250
5251 case 232: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5252 #line 1747 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5253 {
5254 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5255 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5256 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5257 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5258 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5259 }
5260 #line 5261 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5261 break;
5262
5263 case 233: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5264 #line 1755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5265 {
5266 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5267 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5268 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5269 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5270 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5271 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5272 }
5273 #line 5274 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5274 break;
5275
5276 case 234: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5277 #line 1764 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5278 {
5279 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5280 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5281 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5282 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5283 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5284 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5285 }
5286 #line 5287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5287 break;
5288
5289 case 235: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5290 #line 1773 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5291 {
5292 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5293 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5294 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5295 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5296 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5297 }
5298 #line 5299 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5299 break;
5300
5301 case 236: /* Token_In: COLON */
5302 #line 1783 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5303 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5304 #line 5305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5305 break;
5306
5307 case 237: /* Token_In: IN */
5308 #line 1784 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5309 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5310 #line 5311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5311 break;
5312
5313 case 238: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5314 #line 1788 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5315 {
5316 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5317 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5318 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5319 #line 5320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5320 break;
5321
5322 case 239: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5323 #line 1792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5324 {
5325 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5326 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5327 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5328 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5329 #line 5330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5330 break;
5331
5332 case 240: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5333 #line 1797 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5334 {
5335 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5336 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5337 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5338 stmt->invert();
5339 (*yyvalp) = stmt;}
5340 #line 5341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5341 break;
5342
5343 case 241: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5344 #line 1803 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5345 {
5346 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5347 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5348 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5349 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5350 stmt->invert();
5351 (*yyvalp) = stmt;}
5352 #line 5353 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5353 break;
5354
5355 case 242: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5356 #line 1813 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5357 {
5358 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5359 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5360 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5361 #line 5362 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5362 break;
5363
5364 case 243: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5365 #line 1817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5366 {
5367 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5368 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5369 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5370 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5371 #line 5372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5372 break;
5373
5374 case 244: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5375 #line 1822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5376 {
5377 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5378 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5379 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5380 stmt->invert();
5381 (*yyvalp) = stmt;}
5382 #line 5383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5383 break;
5384
5385 case 245: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5386 #line 1828 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5387 {
5388 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5389 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5390 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5391 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5392 stmt->invert();
5393 (*yyvalp) = stmt;}
5394 #line 5395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5395 break;
5396
5397 case 246: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5398 #line 1838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5399 {
5400 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5401 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5402 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5403 #line 5404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5404 break;
5405
5406 case 247: /* Statement_Return: RETURN Expression */
5407 #line 1845 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5408 {
5409 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5410 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5411 #line 5412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5412 break;
5413
5414 case 248: /* Statement_Return: RETURN */
5415 #line 1848 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5416 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5417 #line 5418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5418 break;
5419
5420 case 249: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5421 #line 1852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5422 {
5423 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5424 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5425 statement->compileErrorCatches.push_back(errorId);
5426 (*yyvalp) = statement;}
5427 #line 5428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5428 break;
5429
5430 case 250: /* Annotated_Enum: Annotation_List DataEnum */
5431 #line 1860 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5432 {
5433 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5434 ASTDataEnum* en = dynamic_cast<ASTDataEnum*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5435 ASTCustomDataTypeDef* tdef = dynamic_cast<ASTCustomDataTypeDef*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5436 if(tdef) en = tdef->definition.get();
5437 if(tdef) tdef->doc_comment = std::move(list->doc_comment);
5438 handle_annotations(list, [&](AnnotData& data)
5439 {
5440 auto& key = data.key;
5441 if(key == "Increment")
5442 {
5443 if(en->getBitMode() != ASTDataEnum::BIT_NONE)
5444 annot_incompatible("Increment", "Bitflags");
5445 else if(annot_type_check(ANNTY_INT, data))
5446 en->increment_val = data.intval;
5447 return true;
5448 }
5449 else if(key == "Bitflags")
5450 {
5451 if(en->increment_val)
5452 annot_incompatible("Bitflags", "Increment");
5453 else if(annot_type_check(ANNTY_STR, data))
5454 {
5455 if(data.strval == "int")
5456 en->setBitMode(ASTDataEnum::BIT_INT);
5457 else if(data.strval == "long")
5458 en->setBitMode(ASTDataEnum::BIT_LONG);
5459 }
5460 return true;
5461 }
5462 return false;
5463 });
5464 (*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5465 #line 5466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5466 break;
5467
5468 case 251: /* Annotated_Enum: DataEnum */
5469 #line 1893 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5470 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5471 #line 5472 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5472 break;
5473
5474 case 252: /* DataEnum: ENUM LBRACE Enum_Block Trail_Comma_RBrace */
5475 #line 1896 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5476 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5477 #line 5478 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5478 break;
5479
5480 case 253: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block Trail_Comma_RBrace */
5481 #line 1897 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5482 {
5483 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5484 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5485 type->constant_ = 1; //force to be constant, skip `const const` errors
5486 list->baseType = type;
5487 list->location = (*yylocp);
5488 (*yyvalp) = list;}
5489 #line 5490 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5490 break;
5491
5492 case 254: /* DataEnum: ENUM IDENTIFIER LBRACE Enum_Block Trail_Comma_RBrace */
5493 #line 1904 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5494 {
5495 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5496 en->location = (*yylocp);
5497 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5498 auto custom_typedef = new ASTCustomDataTypeDef(NULL, identifier, en, (*yylocp));
5499 custom_typedef->doc_comment = std::move(identifier->doc_comment);
5500 (*yyvalp) = custom_typedef;}
5501 #line 5502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5502 break;
5503
5504 case 255: /* Enum_Block: Enum_Block COMMA Data_Element */
5505 #line 1913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5506 {
5507 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5508 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5509 list->addDeclaration(element);
5510 (*yyvalp) = list;}
5511 #line 5512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5512 break;
5513
5514 case 256: /* Enum_Block: Data_Element */
5515 #line 1918 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5516 {
5517 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5518 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5519 list->addDeclaration(element);
5520 (*yyvalp) = list;}
5521 #line 5522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5522 break;
5523
5524 case 257: /* ScopeRes: SCOPERES */
5525 #line 1970 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5526 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5527 #line 5528 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5528 break;
5529
5530 case 258: /* Identifier_List: Mixed_Identifier_List */
5531 #line 1975 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5532 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5533 #line 5534 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5534 break;
5535
5536 case 259: /* Identifier_List: idlist_scopres */
5537 #line 1976 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5538 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5539 #line 5540 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5540 break;
5541
5542 case 260: /* Identifier_List: idlist_dot */
5543 #line 1977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5544 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5545 #line 5546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5546 break;
5547
5548 case 261: /* Identifier_List: Ambigious_Iden_List */
5549 #line 1978 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5550 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5551 #line 5552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5552 break;
5553
5554 case 262: /* Scoperes_Identifier_List: idlist_scopres */
5555 #line 1982 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5556 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5557 #line 5558 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5558 break;
5559
5560 case 263: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5561 #line 1983 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5562 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5563 #line 5564 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5564 break;
5565
5566 case 264: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5567 #line 1992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5568 {
5569 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5570 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5571 identifier->components.push_back(name->getValue());
5572 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5573 identifier->delimiters.push_back(".");
5574 identifier->location = (*yylocp);
5575 (*yyvalp) = identifier;}
5576 #line 5577 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5577 break;
5578
5579 case 265: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5580 #line 2000 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5581 {
5582 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5583 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5584 identifier->components.push_back(name->getValue());
5585 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5586 identifier->delimiters.push_back(".");
5587 identifier->location = (*yylocp);
5588 (*yyvalp) = identifier;}
5589 #line 5590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5590 break;
5591
5592 case 266: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5593 #line 2008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5594 {
5595 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5596 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5597 identifier->components.push_back(name->getValue());
5598 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5599 identifier->delimiters.push_back("::");
5600 identifier->location = (*yylocp);
5601 (*yyvalp) = identifier;}
5602 #line 5603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5603 break;
5604
5605 case 267: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5606 #line 2016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5607 {
5608 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5609 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5610 identifier->components.push_back(name->getValue());
5611 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5612 identifier->delimiters.push_back("::");
5613 identifier->location = (*yylocp);
5614 (*yyvalp) = identifier;}
5615 #line 5616 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5616 break;
5617
5618 case 268: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5619 #line 2027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5620 {
5621 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5622 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5623 identifier->components.push_back(name->getValue());
5624 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5625 identifier->delimiters.push_back("::");
5626 identifier->location = (*yylocp);
5627 (*yyvalp) = identifier;}
5628 #line 5629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5629 break;
5630
5631 case 269: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5632 #line 2035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5633 {
5634 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5635 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5636 identifier->components.push_back(name->getValue());
5637 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5638 identifier->delimiters.push_back("::");
5639 identifier->location = (*yylocp);
5640 (*yyvalp) = identifier;}
5641 #line 5642 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5642 break;
5643
5644 case 270: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5645 #line 2043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5646 {
5647 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5648 identifier->noUsing = true;
5649 (*yyvalp) = identifier;}
5650 #line 5651 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5651 break;
5652
5653 case 271: /* idlist_dot: idlist_dot DOT Identifier */
5654 #line 2050 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5655 {
5656 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5657 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5658 identifier->components.push_back(name->getValue());
5659 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5660 identifier->delimiters.push_back(".");
5661 identifier->location = (*yylocp);
5662 (*yyvalp) = identifier;}
5663 #line 5664 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5664 break;
5665
5666 case 272: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5667 #line 2058 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5668 {
5669 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5670 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5671 identifier->components.push_back(name->getValue());
5672 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5673 identifier->delimiters.push_back(".");
5674 identifier->location = (*yylocp);
5675 (*yyvalp) = identifier;}
5676 #line 5677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5677 break;
5678
5679 case 273: /* Ambigious_Iden_List: Identifier */
5680 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5681 {
5682 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5683 ASTExprIdentifier* identifier = new ASTExprIdentifier(std::shared_ptr<ASTString>(name), (*yylocp));
5684 identifier->doc_comment = std::move(name->doc_comment);
5685 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5686 (*yyvalp) = identifier;}
5687 #line 5688 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5688 break;
5689
5690 case 274: /* Identifier: IDENTIFIER */
5691 #line 2078 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5692 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5693 #line 5694 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5694 break;
5695
5696 case 275: /* Func_Left: Expr_Arrow */
5697 #line 2082 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5698 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5699 #line 5700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5700 break;
5701
5702 case 276: /* Func_Left: Identifier_List */
5703 #line 2083 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5704 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5705 #line 5706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5706 break;
5707
5708 case 277: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5709 #line 2087 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5710 {
5711 ASTExprCall* call = new ASTExprCall((*yylocp));
5712 call->setConstructor(true);
5713 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5714 call->left = left;
5715 call->location = (*yylocp);
5716 (*yyvalp) = call;}
5717 #line 5718 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5718 break;
5719
5720 case 278: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5721 #line 2094 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5722 {
5723 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5724 call->setConstructor(true);
5725 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5726 call->left = left;
5727 call->location = (*yylocp);
5728 (*yyvalp) = call;}
5729 #line 5730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5730 break;
5731
5732 case 279: /* Function_Call: Func_Left LPAREN RPAREN */
5733 #line 2101 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5734 {
5735 ASTExprCall* call = new ASTExprCall((*yylocp));
5736 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5737 call->left = left;
5738 call->location = (*yylocp);
5739 (*yyvalp) = call;}
5740 #line 5741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5741 break;
5742
5743 case 280: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5744 #line 2107 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5745 {
5746 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5747 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5748 call->left = left;
5749 call->location = (*yylocp);
5750 (*yyvalp) = call;}
5751 #line 5752 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5752 break;
5753
5754 case 281: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5755 #line 2116 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5756 {
5757 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5758 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5759 call->parameters.push_back(e);
5760 call->location = (*yylocp);
5761 (*yyvalp) = call;}
5762 #line 5763 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5763 break;
5764
5765 case 282: /* Function_Call_Parameters: Expression */
5766 #line 2122 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5767 {
5768 ASTExprCall* call = new ASTExprCall((*yylocp));
5769 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5770 call->parameters.push_back(e);
5771 (*yyvalp) = call;}
5772 #line 5773 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5773 break;
5774
5775 case 283: /* Expr_1: Identifier_List */
5776 #line 2134 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5777 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5778 #line 5779 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5779 break;
5780
5781 case 284: /* Expr_1: Literal */
5782 #line 2135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5783 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5784 #line 5785 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5785 break;
5786
5787 case 285: /* Expr_1: LPAREN Expression RPAREN */
5788 #line 2136 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5789 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5790 #line 5791 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5791 break;
5792
5793 case 286: /* Expr_2: Expr_1 */
5794 #line 2138 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5795 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5796 #line 5797 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5797 break;
5798
5799 case 287: /* Expr_2: LT DataType GT Expr_2 */
5800 #line 2148 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5801 {
5802 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5803 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5804 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5805 (*yyvalp) = cast;}
5806 #line 5807 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5807 break;
5808
5809 case 288: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5810 #line 2156 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5811 {
5812 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5813 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5814 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5815 #line 5816 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5816 break;
5817
5818 case 289: /* Expr_3: Expr_2 */
5819 #line 2162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5820 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5821 #line 5822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5822 break;
5823
5824 case 290: /* Expr_3: Expr_3 INCREMENT */
5825 #line 2164 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5826 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5827 #line 5828 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5828 break;
5829
5830 case 291: /* Expr_3: Expr_3 DECREMENT */
5831 #line 2166 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5832 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5833 #line 5834 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5834 break;
5835
5836 case 292: /* Expr_3: Function_Call */
5837 #line 2168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5838 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5839 #line 5840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5840 break;
5841
5842 case 293: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5843 #line 2170 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5844 {
5845 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5846 #line 5847 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5847 break;
5848
5849 case 294: /* Expr_3: Expr_Arrow */
5850 #line 2173 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5851 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5852 #line 5853 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5853 break;
5854
5855 case 295: /* Expr_4: Expr_3 */
5856 #line 2176 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5857 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5858 #line 5859 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5859 break;
5860
5861 case 296: /* Expr_4: INCREMENT Expr_4 */
5862 #line 2178 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5863 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5864 #line 5865 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5865 break;
5866
5867 case 297: /* Expr_4: DECREMENT Expr_4 */
5868 #line 2180 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5869 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5870 #line 5871 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5871 break;
5872
5873 case 298: /* Expr_4: MINUS Expr_4 */
5874 #line 2182 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5875 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5876 #line 5877 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5877 break;
5878
5879 case 299: /* Expr_4: NOT Expr_4 */
5880 #line 2184 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5881 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5882 #line 5883 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5883 break;
5884
5885 case 300: /* Expr_4: BITNOT Expr_4 */
5886 #line 2186 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5887 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5888 #line 5889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5889 break;
5890
5891 case 301: /* Expr_5: Expr_4 */
5892 #line 2189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5893 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5894 #line 5895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5895 break;
5896
5897 case 302: /* Expr_5: Expr_5 EXPN Expr_4 */
5898 #line 2191 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5899 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5900 #line 5901 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5901 break;
5902
5903 case 303: /* Expr_6: Expr_5 */
5904 #line 2194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5905 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5906 #line 5907 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5907 break;
5908
5909 case 304: /* Expr_6: Expr_6 TIMES Expr_5 */
5910 #line 2196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5911 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5912 #line 5913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5913 break;
5914
5915 case 305: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5916 #line 2198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5917 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5918 #line 5919 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5919 break;
5920
5921 case 306: /* Expr_6: Expr_6 MODULO Expr_5 */
5922 #line 2200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5923 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5924 #line 5925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5925 break;
5926
5927 case 307: /* Expr_7: Expr_6 */
5928 #line 2203 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5929 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5930 #line 5931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5931 break;
5932
5933 case 308: /* Expr_7: Expr_7 PLUS Expr_6 */
5934 #line 2205 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5935 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5936 #line 5937 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5937 break;
5938
5939 case 309: /* Expr_7: Expr_7 MINUS Expr_6 */
5940 #line 2207 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5941 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5942 #line 5943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5943 break;
5944
5945 case 310: /* Expr_8: Expr_7 */
5946 #line 2210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5947 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5948 #line 5949 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5949 break;
5950
5951 case 311: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5952 #line 2212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5953 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5954 #line 5955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5955 break;
5956
5957 case 312: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5958 #line 2214 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5959 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5960 #line 5961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5961 break;
5962
5963 case 313: /* Expr_9: Expr_8 */
5964 #line 2217 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5965 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5966 #line 5967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5967 break;
5968
5969 case 314: /* Expr_9: Expr_9 LT Expr_8 */
5970 #line 2219 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5971 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5972 #line 5973 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5973 break;
5974
5975 case 315: /* Expr_9: Expr_9 LE Expr_8 */
5976 #line 2221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5977 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5978 #line 5979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5979 break;
5980
5981 case 316: /* Expr_9: Expr_9 GT Expr_8 */
5982 #line 2223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5983 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5984 #line 5985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5985 break;
5986
5987 case 317: /* Expr_9: Expr_9 GE Expr_8 */
5988 #line 2225 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5989 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5990 #line 5991 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5991 break;
5992
5993 case 318: /* Expr_10: Expr_9 */
5994 #line 2228 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5995 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5996 #line 5997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5997 break;
5998
5999 case 319: /* Expr_10: Expr_10 EQ Expr_9 */
6000 #line 2230 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6001 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6002 #line 6003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6003 break;
6004
6005 case 320: /* Expr_10: Expr_10 NE Expr_9 */
6006 #line 2232 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6007 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6008 #line 6009 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6009 break;
6010
6011 case 321: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
6012 #line 2234 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6013 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6014 #line 6015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6015 break;
6016
6017 case 322: /* Expr_10: Expr_10 XOR Expr_9 */
6018 #line 2236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6019 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6020 #line 6021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6021 break;
6022
6023 case 323: /* Expr_11: Expr_10 */
6024 #line 2239 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6025 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6026 #line 6027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6027 break;
6028
6029 case 324: /* Expr_11: Expr_11 BITAND Expr_10 */
6030 #line 2241 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6031 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6032 #line 6033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6033 break;
6034
6035 case 325: /* Expr_12: Expr_11 */
6036 #line 2244 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6037 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6038 #line 6039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6039 break;
6040
6041 case 326: /* Expr_12: Expr_12 BITXOR Expr_11 */
6042 #line 2246 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6043 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6044 #line 6045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6045 break;
6046
6047 case 327: /* Expr_13: Expr_12 */
6048 #line 2249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6049 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6050 #line 6051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6051 break;
6052
6053 case 328: /* Expr_13: Expr_13 BITOR Expr_12 */
6054 #line 2251 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6055 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6056 #line 6057 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6057 break;
6058
6059 case 329: /* Expr_14: Expr_13 */
6060 #line 2254 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6061 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6062 #line 6063 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6063 break;
6064
6065 case 330: /* Expr_14: Expr_14 AND Expr_13 */
6066 #line 2256 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6067 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6068 #line 6069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6069 break;
6070
6071 case 331: /* Expr_15: Expr_14 */
6072 #line 2259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6073 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6074 #line 6075 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6075 break;
6076
6077 case 332: /* Expr_15: Expr_15 OR Expr_14 */
6078 #line 2261 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6079 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6080 #line 6081 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6081 break;
6082
6083 case 333: /* Expr_16: Expr_15 */
6084 #line 2264 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6085 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6086 #line 6087 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6087 break;
6088
6089 case 334: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
6090 #line 2267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6091 {
6092 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6093 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6094 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6095 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
6096 }
6097 #line 6098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6098 break;
6099
6100 case 335: /* Expr_17: Expr_16 */
6101 #line 2275 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6102 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6103 #line 6104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6104 break;
6105
6106 case 336: /* Expr_17: DELETE Expr_17 */
6107 #line 2276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6108 {
6109 ASTExprDelete* del = new ASTExprDelete((*yylocp));
6110 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6111 del->operand = operand;
6112 (*yyvalp) = del;}
6113 #line 6114 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6114 break;
6115
6116 case 337: /* Expr_18: Expr_17 */
6117 #line 2283 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6118 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6119 #line 6120 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6120 break;
6121
6122 case 338: /* Expr_18: Expr_17 ASSIGN Expr_18 */
6123 #line 2285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6124 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6125 #line 6126 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6126 break;
6127
6128 case 339: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6129 #line 2287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6130 {
6131 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6132 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6133 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6134 #line 6135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6135 break;
6136
6137 case 340: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6138 #line 2292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6139 {
6140 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6141 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6142 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6143 #line 6144 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6144 break;
6145
6146 case 341: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6147 #line 2297 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6148 {
6149 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6150 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6151 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6152 #line 6153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6153 break;
6154
6155 case 342: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6156 #line 2302 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6157 {
6158 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6159 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6160 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6161 #line 6162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6162 break;
6163
6164 case 343: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6165 #line 2307 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6166 {
6167 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6168 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6169 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6170 #line 6171 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6171 break;
6172
6173 case 344: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6174 #line 2312 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6175 {
6176 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6177 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6178 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6179 #line 6180 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6180 break;
6181
6182 case 345: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6183 #line 2317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6184 {
6185 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6186 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6187 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6188 #line 6189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6189 break;
6190
6191 case 346: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6192 #line 2322 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6193 {
6194 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6195 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6196 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6197 #line 6198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6198 break;
6199
6200 case 347: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6201 #line 2328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6202 {
6203 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6204 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6205 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6206 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6207 #line 6208 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6208 break;
6209
6210 case 348: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6211 #line 2334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6212 {
6213 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6214 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6215 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6216 #line 6217 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6217 break;
6218
6219 case 349: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6220 #line 2339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6221 {
6222 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6223 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6224 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6225 #line 6226 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6226 break;
6227
6228 case 350: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6229 #line 2344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6230 {
6231 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6232 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6233 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6234 #line 6235 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6235 break;
6236
6237 case 351: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6238 #line 2349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6239 {
6240 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6241 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6242 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6243 #line 6244 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6244 break;
6245
6246 case 352: /* Expression: Expr_18 */
6247 #line 2355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6248 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6249 #line 6250 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6250 break;
6251
6252 case 353: /* Statement_Expression: Expression */
6253 #line 2358 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6254 {
6255 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6256 expr = handle_statement_expr(expr);
6257 (*yyvalp) = expr;}
6258 #line 6259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6259 break;
6260
6261 case 354: /* Expression_Constant: Expression */
6262 #line 2365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6263 {
6264 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6265 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6266 #line 6267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6267 break;
6268
6269 case 355: /* Expression_Const_Range: Expression_Range */
6270 #line 2371 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6271 {
6272 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6273 ASTExpr* start = range->start.release();
6274 range->start = new ASTExprConst(start, start->location);
6275 ASTExpr* end = range->end.release();
6276 range->end = new ASTExprConst(end, end->location);
6277 (*yyvalp) = range;
6278 }
6279 #line 6280 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6280 break;
6281
6282 case 356: /* Expression_Range: Expression RANGE Expression */
6283 #line 2382 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6284 {
6285 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6286 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6287 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6288 #line 6289 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6289 break;
6290
6291 case 357: /* Expression_Range: Expression RANGE_LR Expression */
6292 #line 2387 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6293 {
6294 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6295 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6296 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6297 #line 6298 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6298 break;
6299
6300 case 358: /* Expression_Range: Expression RANGE_L Expression */
6301 #line 2392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6302 {
6303 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6304 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6305 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6306 #line 6307 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6307 break;
6308
6309 case 359: /* Expression_Range: Expression RANGE_R Expression */
6310 #line 2397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6311 {
6312 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6313 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6314 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6315 #line 6316 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6316 break;
6317
6318 case 360: /* Expression_Range: Expression RANGE_N Expression */
6319 #line 2402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6320 {
6321 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6322 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6323 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6324 #line 6325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6325 break;
6326
6327 case 361: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6328 #line 2407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6329 {
6330 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6331 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6332 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6333 #line 6334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6334 break;
6335
6336 case 362: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6337 #line 2412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6338 {
6339 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6340 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6341 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6342 #line 6343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6343 break;
6344
6345 case 363: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6346 #line 2417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6347 {
6348 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6349 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6350 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6351 #line 6352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6352 break;
6353
6354 case 364: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6355 #line 2422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6356 {
6357 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6358 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6359 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6360 #line 6361 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6361 break;
6362
6363 case 365: /* Literal: NUMBER */
6364 #line 2432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6365 {
6366 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6367 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6368 #line 6369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6369 break;
6370
6371 case 366: /* Literal: LONGNUMBER */
6372 #line 2435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6373 {
6374 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6375 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6376 #line 6377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6377 break;
6378
6379 case 367: /* Literal: SINGLECHAR */
6380 #line 2438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6381 {
6382 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6383 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6384 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6385 #line 6386 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6386 break;
6387
6388 case 368: /* Literal: Literal_String */
6389 #line 2442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6390 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6391 #line 6392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6392 break;
6393
6394 case 369: /* Literal: Literal_Bool */
6395 #line 2443 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6396 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6397 #line 6398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6398 break;
6399
6400 case 370: /* Literal: Literal_Array */
6401 #line 2444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6402 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6403 #line 6404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6404 break;
6405
6406 case 371: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6407 #line 2445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6408 {
6409 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6410 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6411 delete name;}
6412 #line 6413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6413 break;
6414
6415 case 372: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6416 #line 2449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6417 {
6418 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6419 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6420 delete name;}
6421 #line 6422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6422 break;
6423
6424 case 373: /* QuotedString: QuotedString QUOTEDSTRING */
6425 #line 2456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6426 {
6427 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6428 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6429 str->append(rawstr->getValue());
6430 delete rawstr;
6431 (*yyvalp) = str;}
6432 #line 6433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6433 break;
6434
6435 case 374: /* QuotedString: QUOTEDSTRING */
6436 #line 2462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6437 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6438 #line 6439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6439 break;
6440
6441 case 375: /* Literal_String: QuotedString */
6442 #line 2466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6443 {
6444 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6445 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6446 delete rawstring;
6447 (*yyvalp) = str;}
6448 #line 6449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6449 break;
6450
6451 case 376: /* Literal_Bool: ZTRUE */
6452 #line 2475 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6453 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6454 #line 6455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6455 break;
6456
6457 case 377: /* Literal_Bool: ZFALSE */
6458 #line 2476 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6459 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6460 #line 6461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6461 break;
6462
6463 case 378: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body Trail_Comma_RBrace */
6464 #line 2483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6465 {
6466 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6467 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6468 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6469 al->type = type;
6470 al->size = size;
6471 al->location = (*yylocp);
6472 (*yyvalp) = al;
6473 }
6474 #line 6475 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6475 break;
6476
6477 case 379: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6478 #line 2495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6479 {
6480 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6481 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6482 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6483 al->type = type;
6484 al->size = size;
6485 (*yyvalp) = al;
6486 }
6487 #line 6488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6488 break;
6489
6490 case 380: /* Literal_Array: LBRACE Literal_Array_Body Trail_Comma_RBrace */
6491 #line 2504 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6492 {
6493 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6494 al->location = (*yylocp);
6495 (*yyvalp) = al;}
6496 #line 6497 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6497 break;
6498
6499 case 381: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6500 #line 2511 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6501 {
6502 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6503 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6504 al->elements.push_back(element);
6505 (*yyvalp) = al;}
6506 #line 6507 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6507 break;
6508
6509 case 382: /* Literal_Array_Body: Expression */
6510 #line 2516 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6511 {
6512 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6513 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6514 al->elements.push_back(element);
6515 (*yyvalp) = al;}
6516 #line 6517 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6517 break;
6518
6519
6520 #line 6521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6521
6522 default: break;
6523 }
6524 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6525
6526 401424932 return yyok;
6527 # undef yyerrok
6528 # undef YYABORT
6529 # undef YYACCEPT
6530 # undef YYNOMEM
6531 # undef YYERROR
6532 # undef YYBACKUP
6533 # undef yyclearin
6534 # undef YYRECOVERING
6535 }
6536
6537
6538 static void
6539 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6540 {
6541 YY_USE (yy0);
6542 YY_USE (yy1);
6543
6544 switch (yyn)
6545 {
6546
6547 default: break;
6548 }
6549 }
6550
6551 /* Bison grammar-table manipulation. */
6552
6553 /*-----------------------------------------------.
6554 | Release the memory associated to this symbol. |
6555 `-----------------------------------------------*/
6556
6557 static void
6558 121280 yydestruct (const char *yymsg,
6559 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
6560 {
6561 YY_USE (yyvaluep);
6562 YY_USE (yylocationp);
6563 121280 YY_USE (root);
6564
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 121280 times.
121280 if (!yymsg)
6565 yymsg = "Deleting";
6566 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6567
6568 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6569 YY_USE (yykind);
6570 YY_IGNORE_MAYBE_UNINITIALIZED_END
6571 121280 }
6572
6573 /** Number of symbols composing the right hand side of rule #RULE. */
6574 static inline int
6575 401452480 yyrhsLength (yyRuleNum yyrule)
6576 {
6577 401452480 return yyr2[yyrule];
6578 }
6579
6580 static void
6581 121223 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::shared_ptr<ZScript::ASTFile>& root)
6582 {
6583
1/2
✓ Branch 0 taken 121223 times.
✗ Branch 1 not taken.
121223 if (yys->yyresolved)
6584 242446 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6585 121223 &yys->yysemantics.yyval, &yys->yyloc, root);
6586 else
6587 {
6588 #if YYDEBUG
6589 if (yydebug)
6590 {
6591 if (yys->yysemantics.yyfirstVal)
6592 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6593 else
6594 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6595 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6596 }
6597 #endif
6598
6599 if (yys->yysemantics.yyfirstVal)
6600 {
6601 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6602 yyGLRState *yyrh;
6603 int yyn;
6604 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6605 yyn > 0;
6606 yyrh = yyrh->yypred, yyn -= 1)
6607 yydestroyGLRState (yymsg, yyrh, root);
6608 }
6609 }
6610 121223 }
6611
6612 #define yypact_value_is_default(Yyn) \
6613 ((Yyn) == YYPACT_NINF)
6614
6615 /** True iff LR state YYSTATE has only a default reduction (regardless
6616 * of token). */
6617 static inline yybool
6618 768434106 yyisDefaultedState (yy_state_t yystate)
6619 {
6620 768434106 return yypact_value_is_default (yypact[yystate]);
6621 }
6622
6623 /** The default reduction for YYSTATE, assuming it has one. */
6624 static inline yyRuleNum
6625 188543543 yydefaultAction (yy_state_t yystate)
6626 {
6627 188543543 return yydefact[yystate];
6628 }
6629
6630 #define yytable_value_is_error(Yyn) \
6631 0
6632
6633 /** The action to take in YYSTATE on seeing YYTOKEN.
6634 * Result R means
6635 * R < 0: Reduce on rule -R.
6636 * R = 0: Error.
6637 * R > 0: Shift to state R.
6638 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6639 * of conflicting reductions.
6640 */
6641 static inline int
6642 289947176 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6643 {
6644 289947176 int yyindex = yypact[yystate] + yytoken;
6645
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 289947176 times.
289947176 if (yytoken == YYSYMBOL_YYerror)
6646 {
6647 // This is the error token.
6648 *yyconflicts = yyconfl;
6649 return 0;
6650 }
6651
2/2
✓ Branch 0 taken 209937535 times.
✓ Branch 1 taken 80009641 times.
579894352 else if (yyisDefaultedState (yystate)
6652
3/6
✓ Branch 0 taken 289947176 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 289947176 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 289947176 times.
✗ Branch 5 not taken.
289947176 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6653 {
6654 209937535 *yyconflicts = yyconfl;
6655 209937535 return -yydefact[yystate];
6656 }
6657 else if (! yytable_value_is_error (yytable[yyindex]))
6658 {
6659 80009641 *yyconflicts = yyconfl + yyconflp[yyindex];
6660 80009641 return yytable[yyindex];
6661 }
6662 else
6663 {
6664 *yyconflicts = yyconfl + yyconflp[yyindex];
6665 return 0;
6666 }
6667 289947176 }
6668
6669 /** Compute post-reduction state.
6670 * \param yystate the current state
6671 * \param yysym the nonterminal to push on the stack
6672 */
6673 static inline yy_state_t
6674 401452480 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6675 {
6676 401452480 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6677
5/6
✓ Branch 0 taken 312099185 times.
✓ Branch 1 taken 89353295 times.
✓ Branch 2 taken 312099185 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 61958686 times.
✓ Branch 5 taken 250140499 times.
401452480 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6678 61958686 return yytable[yyr];
6679 else
6680 339493794 return yydefgoto[yysym - YYNTOKENS];
6681 401452480 }
6682
6683 static inline yybool
6684 289939598 yyisShiftAction (int yyaction)
6685 {
6686 289939598 return 0 < yyaction;
6687 }
6688
6689 static inline yybool
6690 212908994 yyisErrorAction (int yyaction)
6691 {
6692 212908994 return yyaction == 0;
6693 }
6694
6695 /* GLRStates */
6696
6697 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6698 * if YYISSTATE, and otherwise a semantic option. Callers should call
6699 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6700 * headroom. */
6701
6702 static inline yyGLRStackItem*
6703 478571083 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6704 {
6705 478571083 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6706 478571083 yystackp->yyspaceLeft -= 1;
6707 478571083 yystackp->yynextFree += 1;
6708 478571083 yynewItem->yystate.yyisState = yyisState;
6709 478571083 return yynewItem;
6710 }
6711
6712 /** Add a new semantic action that will execute the action for rule
6713 * YYRULE on the semantic values in YYRHS to the list of
6714 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6715 * stack #YYK of *YYSTACKP. */
6716 static void
6717 27548 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6718 yyGLRState* yyrhs, yyRuleNum yyrule)
6719 {
6720 27548 yySemanticOption* yynewOption =
6721 27548 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6722 YY_ASSERT (!yynewOption->yyisState);
6723 27548 yynewOption->yystate = yyrhs;
6724 27548 yynewOption->yyrule = yyrule;
6725
1/2
✓ Branch 0 taken 27548 times.
✗ Branch 1 not taken.
27548 if (yystackp->yytops.yylookaheadNeeds[yyk])
6726 {
6727 27548 yynewOption->yyrawchar = yychar;
6728 27548 yynewOption->yyval = yylval;
6729 27548 yynewOption->yyloc = yylloc;
6730 27548 }
6731 else
6732 yynewOption->yyrawchar = TOK_YYEMPTY;
6733 27548 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6734 27548 yystate->yysemantics.yyfirstVal = yynewOption;
6735
6736
1/2
✓ Branch 0 taken 27548 times.
✗ Branch 1 not taken.
27548 YY_RESERVE_GLRSTACK (yystackp);
6737 27548 }
6738
6739 /* GLRStacks */
6740
6741 /** Initialize YYSET to a singleton set containing an empty stack. */
6742 static yybool
6743 60451 yyinitStateSet (yyGLRStateSet* yyset)
6744 {
6745 60451 yyset->yysize = 1;
6746 60451 yyset->yycapacity = 16;
6747 60451 yyset->yystates
6748 120902 = YY_CAST (yyGLRState**,
6749 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6750 * sizeof yyset->yystates[0]));
6751
1/2
✓ Branch 0 taken 60451 times.
✗ Branch 1 not taken.
60451 if (! yyset->yystates)
6752 return yyfalse;
6753 60451 yyset->yystates[0] = YY_NULLPTR;
6754 60451 yyset->yylookaheadNeeds
6755 120902 = YY_CAST (yybool*,
6756 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6757 * sizeof yyset->yylookaheadNeeds[0]));
6758
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 60451 times.
60451 if (! yyset->yylookaheadNeeds)
6759 {
6760 YYFREE (yyset->yystates);
6761 return yyfalse;
6762 }
6763 120902 memset (yyset->yylookaheadNeeds,
6764 0,
6765 60451 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6766 60451 return yytrue;
6767 60451 }
6768
6769 60451 static void yyfreeStateSet (yyGLRStateSet* yyset)
6770 {
6771 60451 YYFREE (yyset->yystates);
6772 60451 YYFREE (yyset->yylookaheadNeeds);
6773 60451 }
6774
6775 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6776 * capacity for all stacks of YYSIZE. */
6777 static yybool
6778 60451 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6779 {
6780 60451 yystackp->yyerrState = 0;
6781 60451 yynerrs = 0;
6782 60451 yystackp->yyspaceLeft = yysize;
6783 60451 yystackp->yyitems
6784 120902 = YY_CAST (yyGLRStackItem*,
6785 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6786 * sizeof yystackp->yynextFree[0]));
6787
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 60451 times.
60451 if (!yystackp->yyitems)
6788 return yyfalse;
6789 60451 yystackp->yynextFree = yystackp->yyitems;
6790 60451 yystackp->yysplitPoint = YY_NULLPTR;
6791 60451 yystackp->yylastDeleted = YY_NULLPTR;
6792 60451 return yyinitStateSet (&yystackp->yytops);
6793 60451 }
6794
6795
6796 #if YYSTACKEXPANDABLE
6797 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6798 &((YYTOITEMS) \
6799 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6800
6801 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6802 stack from outside should be considered invalid after this call.
6803 We always expand when there are 1 or fewer items left AFTER an
6804 allocation, so that we can avoid having external pointers exist
6805 across an allocation. */
6806 static void
6807 yyexpandGLRStack (yyGLRStack* yystackp)
6808 {
6809 yyGLRStackItem* yynewItems;
6810 yyGLRStackItem* yyp0, *yyp1;
6811 YYPTRDIFF_T yynewSize;
6812 YYPTRDIFF_T yyn;
6813 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6814 if (YYMAXDEPTH - YYHEADROOM < yysize)
6815 yyMemoryExhausted (yystackp);
6816 yynewSize = 2*yysize;
6817 if (YYMAXDEPTH < yynewSize)
6818 yynewSize = YYMAXDEPTH;
6819 yynewItems
6820 = YY_CAST (yyGLRStackItem*,
6821 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6822 * sizeof yynewItems[0]));
6823 if (! yynewItems)
6824 yyMemoryExhausted (yystackp);
6825 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6826 0 < yyn;
6827 yyn -= 1, yyp0 += 1, yyp1 += 1)
6828 {
6829 *yyp1 = *yyp0;
6830 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6831 {
6832 yyGLRState* yys0 = &yyp0->yystate;
6833 yyGLRState* yys1 = &yyp1->yystate;
6834 if (yys0->yypred != YY_NULLPTR)
6835 yys1->yypred =
6836 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6837 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6838 yys1->yysemantics.yyfirstVal =
6839 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6840 }
6841 else
6842 {
6843 yySemanticOption* yyv0 = &yyp0->yyoption;
6844 yySemanticOption* yyv1 = &yyp1->yyoption;
6845 if (yyv0->yystate != YY_NULLPTR)
6846 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6847 if (yyv0->yynext != YY_NULLPTR)
6848 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6849 }
6850 }
6851 if (yystackp->yysplitPoint != YY_NULLPTR)
6852 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6853 yystackp->yysplitPoint, yystate);
6854
6855 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6856 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6857 yystackp->yytops.yystates[yyn] =
6858 YYRELOC (yystackp->yyitems, yynewItems,
6859 yystackp->yytops.yystates[yyn], yystate);
6860 YYFREE (yystackp->yyitems);
6861 yystackp->yyitems = yynewItems;
6862 yystackp->yynextFree = yynewItems + yysize;
6863 yystackp->yyspaceLeft = yynewSize - yysize;
6864 }
6865 #endif
6866
6867 static void
6868 60451 yyfreeGLRStack (yyGLRStack* yystackp)
6869 {
6870 60451 YYFREE (yystackp->yyitems);
6871 60451 yyfreeStateSet (&yystackp->yytops);
6872 60451 }
6873
6874 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6875 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6876 * YYS. */
6877 static inline void
6878 27548 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6879 {
6880
3/4
✓ Branch 0 taken 27548 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23717 times.
✓ Branch 3 taken 3831 times.
27548 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6881 3831 yystackp->yysplitPoint = yys;
6882 27548 }
6883
6884 /** Invalidate stack #YYK in *YYSTACKP. */
6885 static inline void
6886 3789 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6887 {
6888
1/2
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
3789 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6889 3789 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6890 3789 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6891 3789 }
6892
6893 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6894 only be done once after a deletion, and only when all other stacks have
6895 been deleted. */
6896 static void
6897 yyundeleteLastStack (yyGLRStack* yystackp)
6898 {
6899 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6900 return;
6901 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6902 yystackp->yytops.yysize = 1;
6903 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6904 yystackp->yylastDeleted = YY_NULLPTR;
6905 }
6906
6907 static inline void
6908 3846 yyremoveDeletes (yyGLRStack* yystackp)
6909 {
6910 YYPTRDIFF_T yyi, yyj;
6911 3846 yyi = yyj = 0;
6912
2/2
✓ Branch 0 taken 7635 times.
✓ Branch 1 taken 3846 times.
11481 while (yyj < yystackp->yytops.yysize)
6913 {
6914
2/2
✓ Branch 0 taken 3846 times.
✓ Branch 1 taken 3789 times.
7635 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6915 {
6916
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3789 times.
3789 if (yyi == yyj)
6917 3789 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6918 3789 yystackp->yytops.yysize -= 1;
6919 3789 }
6920 else
6921 {
6922 3846 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6923 /* In the current implementation, it's unnecessary to copy
6924 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6925 yyremoveDeletes returns, the parser immediately either enters
6926 deterministic operation or shifts a token. However, it doesn't
6927 hurt, and the code might evolve to need it. */
6928 3846 yystackp->yytops.yylookaheadNeeds[yyj] =
6929 3846 yystackp->yytops.yylookaheadNeeds[yyi];
6930
1/2
✓ Branch 0 taken 3846 times.
✗ Branch 1 not taken.
3846 if (yyj != yyi)
6931 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6932 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6933 3846 yyj += 1;
6934 }
6935 7635 yyi += 1;
6936 }
6937 3846 }
6938
6939 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6940 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6941 * value *YYVALP and source location *YYLOCP. */
6942 static inline void
6943 478515987 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6944 YYPTRDIFF_T yyposn,
6945 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6946 {
6947 478515987 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6948
6949 478515987 yynewState->yylrState = yylrState;
6950 478515987 yynewState->yyposn = yyposn;
6951 478515987 yynewState->yyresolved = yytrue;
6952 478515987 yynewState->yypred = yystackp->yytops.yystates[yyk];
6953 478515987 yynewState->yysemantics.yyval = *yyvalp;
6954 478515987 yynewState->yyloc = *yylocp;
6955 478515987 yystackp->yytops.yystates[yyk] = yynewState;
6956
6957
1/2
✓ Branch 0 taken 478515987 times.
✗ Branch 1 not taken.
478515987 YY_RESERVE_GLRSTACK (yystackp);
6958 478515987 }
6959
6960 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6961 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6962 * semantic value of YYRHS under the action for YYRULE. */
6963 static inline void
6964 27548 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6965 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6966 {
6967 27548 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6968 YY_ASSERT (yynewState->yyisState);
6969
6970 27548 yynewState->yylrState = yylrState;
6971 27548 yynewState->yyposn = yyposn;
6972 27548 yynewState->yyresolved = yyfalse;
6973 27548 yynewState->yypred = yystackp->yytops.yystates[yyk];
6974 27548 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6975 27548 yystackp->yytops.yystates[yyk] = yynewState;
6976
6977 /* Invokes YY_RESERVE_GLRSTACK. */
6978 27548 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6979 27548 }
6980
6981 #if YYDEBUG
6982
6983 /*----------------------------------------------------------------------.
6984 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6985 `----------------------------------------------------------------------*/
6986
6987 static inline void
6988 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6989 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root)
6990 {
6991 int yynrhs = yyrhsLength (yyrule);
6992 int yylow = 1;
6993 int yyi;
6994 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6995 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6996 if (! yynormal)
6997 yyfillin (yyvsp, 1, -yynrhs);
6998 /* The symbols being reduced. */
6999 for (yyi = 0; yyi < yynrhs; yyi++)
7000 {
7001 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
7002 yy_symbol_print (stderr,
7003 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
7004 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
7005 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
7006 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
7007 YY_FPRINTF ((stderr, " (unresolved)"));
7008 YY_FPRINTF ((stderr, "\n"));
7009 }
7010 }
7011 #endif
7012
7013 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
7014 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
7015 * semantic values. Assumes that all ambiguities in semantic values
7016 * have been previously resolved. Set *YYVALP to the resulting value,
7017 * and *YYLOCP to the computed location (if any). Return value is as
7018 * for userAction. */
7019 static inline YYRESULTTAG
7020 401424932 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
7021 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
7022 {
7023 401424932 int yynrhs = yyrhsLength (yyrule);
7024
7025
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 401424932 times.
401424932 if (yystackp->yysplitPoint == YY_NULLPTR)
7026 {
7027 /* Standard special case: single stack. */
7028 401424932 yyGLRStackItem* yyrhs
7029 401424932 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
7030 YY_ASSERT (yyk == 0);
7031 401424932 yystackp->yynextFree -= yynrhs;
7032 401424932 yystackp->yyspaceLeft += yynrhs;
7033 401424932 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
7034 802849864 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
7035 401424932 yyvalp, yylocp, root);
7036 }
7037 else
7038 {
7039 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7040 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
7041 = yystackp->yytops.yystates[yyk];
7042 int yyi;
7043 if (yynrhs == 0)
7044 /* Set default location. */
7045 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
7046 for (yyi = 0; yyi < yynrhs; yyi += 1)
7047 {
7048 yys = yys->yypred;
7049 YY_ASSERT (yys);
7050 }
7051 yyupdateSplit (yystackp, yys);
7052 yystackp->yytops.yystates[yyk] = yys;
7053 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7054 yystackp, yyk, yyvalp, yylocp, root);
7055 }
7056 401424932 }
7057
7058 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
7059 * and push back on the resulting nonterminal symbol. Perform the
7060 * semantic action associated with YYRULE and store its value with the
7061 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
7062 * unambiguous. Otherwise, store the deferred semantic action with
7063 * the new state. If the new state would have an identical input
7064 * position, LR state, and predecessor to an existing state on the stack,
7065 * it is identified with that existing state, eliminating stack #YYK from
7066 * *YYSTACKP. In this case, the semantic value is
7067 * added to the options for the existing state's semantic value.
7068 */
7069 static inline YYRESULTTAG
7070 401452480 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
7071 yybool yyforceEval, std::shared_ptr<ZScript::ASTFile>& root)
7072 {
7073 401452480 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
7074
7075
3/4
✓ Branch 0 taken 27548 times.
✓ Branch 1 taken 401424932 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27548 times.
401452480 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
7076 {
7077 YYSTYPE yyval;
7078 YYLTYPE yyloc;
7079
7080 401424932 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
7081
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 401424932 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
401424932 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
7082 YY_DPRINTF ((stderr,
7083 "Parse on stack %ld rejected by rule %d (line %d).\n",
7084 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
7085
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 401424932 times.
401424932 if (yyflag != yyok)
7086 return yyflag;
7087 802849864 yyglrShift (yystackp, yyk,
7088 802849864 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
7089 401424932 yylhsNonterm (yyrule)),
7090 401424932 yyposn, &yyval, &yyloc);
7091 401424932 }
7092 else
7093 {
7094 YYPTRDIFF_T yyi;
7095 int yyn;
7096 27548 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
7097 yy_state_t yynewLRState;
7098
7099
2/2
✓ Branch 0 taken 30191 times.
✓ Branch 1 taken 27548 times.
57739 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
7100 57739 0 < yyn; yyn -= 1)
7101 {
7102 30191 yys = yys->yypred;
7103 YY_ASSERT (yys);
7104 30191 }
7105 27548 yyupdateSplit (yystackp, yys);
7106 27548 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
7107 27548 YY_DPRINTF ((stderr,
7108 "Reduced stack %ld by rule %d (line %d); action deferred. "
7109 "Now in state %d.\n",
7110 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
7111 yynewLRState));
7112
2/2
✓ Branch 0 taken 27548 times.
✓ Branch 1 taken 55096 times.
82644 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
7113
3/4
✓ Branch 0 taken 27548 times.
✓ Branch 1 taken 27548 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27548 times.
82644 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
7114 {
7115 27548 yyGLRState *yysplit = yystackp->yysplitPoint;
7116 27548 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
7117
5/6
✓ Branch 0 taken 30170 times.
✓ Branch 1 taken 24926 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 30170 times.
✓ Branch 4 taken 27548 times.
✓ Branch 5 taken 27548 times.
55096 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
7118 {
7119
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 27548 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
27548 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
7120 {
7121 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
7122 yymarkStackDeleted (yystackp, yyk);
7123 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
7124 YY_CAST (long, yyk), YY_CAST (long, yyi)));
7125 return yyok;
7126 }
7127 27548 yyp = yyp->yypred;
7128 }
7129 27548 }
7130 27548 yystackp->yytops.yystates[yyk] = yys;
7131 27548 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7132 }
7133 401452480 return yyok;
7134 401452480 }
7135
7136 static YYPTRDIFF_T
7137 3789 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7138 {
7139
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3789 times.
3789 if (yystackp->yysplitPoint == YY_NULLPTR)
7140 {
7141 YY_ASSERT (yyk == 0);
7142 3789 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7143 3789 }
7144
1/2
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
3789 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7145 {
7146 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7147 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7148 if (half_max_capacity < yystackp->yytops.yycapacity)
7149 yyMemoryExhausted (yystackp);
7150 yystackp->yytops.yycapacity *= 2;
7151
7152 {
7153 yyGLRState** yynewStates
7154 = YY_CAST (yyGLRState**,
7155 YYREALLOC (yystackp->yytops.yystates,
7156 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7157 * sizeof yynewStates[0])));
7158 if (yynewStates == YY_NULLPTR)
7159 yyMemoryExhausted (yystackp);
7160 yystackp->yytops.yystates = yynewStates;
7161 }
7162
7163 {
7164 yybool* yynewLookaheadNeeds
7165 = YY_CAST (yybool*,
7166 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7167 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7168 * sizeof yynewLookaheadNeeds[0])));
7169 if (yynewLookaheadNeeds == YY_NULLPTR)
7170 yyMemoryExhausted (yystackp);
7171 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7172 }
7173 }
7174 3789 yystackp->yytops.yystates[yystackp->yytops.yysize]
7175 7578 = yystackp->yytops.yystates[yyk];
7176 3789 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7177 7578 = yystackp->yytops.yylookaheadNeeds[yyk];
7178 3789 yystackp->yytops.yysize += 1;
7179 3789 return yystackp->yytops.yysize - 1;
7180 }
7181
7182 /** True iff YYY0 and YYY1 represent identical options at the top level.
7183 * That is, they represent the same rule applied to RHS symbols
7184 * that produce the same terminal symbols. */
7185 static yybool
7186 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7187 {
7188 if (yyy0->yyrule == yyy1->yyrule)
7189 {
7190 yyGLRState *yys0, *yys1;
7191 int yyn;
7192 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7193 yyn = yyrhsLength (yyy0->yyrule);
7194 yyn > 0;
7195 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7196 if (yys0->yyposn != yys1->yyposn)
7197 return yyfalse;
7198 return yytrue;
7199 }
7200 else
7201 return yyfalse;
7202 }
7203
7204 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7205 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7206 static void
7207 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7208 {
7209 yyGLRState *yys0, *yys1;
7210 int yyn;
7211 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7212 yyn = yyrhsLength (yyy0->yyrule);
7213 0 < yyn;
7214 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7215 {
7216 if (yys0 == yys1)
7217 break;
7218 else if (yys0->yyresolved)
7219 {
7220 yys1->yyresolved = yytrue;
7221 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7222 }
7223 else if (yys1->yyresolved)
7224 {
7225 yys0->yyresolved = yytrue;
7226 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7227 }
7228 else
7229 {
7230 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7231 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7232 while (yytrue)
7233 {
7234 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7235 break;
7236 else if (*yyz0p == YY_NULLPTR)
7237 {
7238 *yyz0p = yyz1;
7239 break;
7240 }
7241 else if (*yyz0p < yyz1)
7242 {
7243 yySemanticOption* yyz = *yyz0p;
7244 *yyz0p = yyz1;
7245 yyz1 = yyz1->yynext;
7246 (*yyz0p)->yynext = yyz;
7247 }
7248 yyz0p = &(*yyz0p)->yynext;
7249 }
7250 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7251 }
7252 }
7253 }
7254
7255 /** Y0 and Y1 represent two possible actions to take in a given
7256 * parsing state; return 0 if no combination is possible,
7257 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7258 static int
7259 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7260 {
7261 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7262 int p0 = yydprec[r0], p1 = yydprec[r1];
7263
7264 if (p0 == p1)
7265 {
7266 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7267 return 0;
7268 else
7269 return 1;
7270 }
7271 if (p0 == 0 || p1 == 0)
7272 return 0;
7273 if (p0 < p1)
7274 return 3;
7275 if (p1 < p0)
7276 return 2;
7277 return 0;
7278 }
7279
7280 static YYRESULTTAG
7281 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root);
7282
7283
7284 /** Resolve the previous YYN states starting at and including state YYS
7285 * on *YYSTACKP. If result != yyok, some states may have been left
7286 * unresolved possibly with empty semantic option chains. Regardless
7287 * of whether result = yyok, each state has been left with consistent
7288 * data so that yydestroyGLRState can be invoked if necessary. */
7289 static YYRESULTTAG
7290 14010 yyresolveStates (yyGLRState* yys, int yyn,
7291 yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7292 {
7293
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 10221 times.
14010 if (0 < yyn)
7294 {
7295 YY_ASSERT (yys->yypred);
7296
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10221 times.
10221 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7297
1/2
✓ Branch 0 taken 10221 times.
✗ Branch 1 not taken.
10221 if (! yys->yyresolved)
7298 YYCHK (yyresolveValue (yys, yystackp, root));
7299 10221 }
7300 14010 return yyok;
7301 14010 }
7302
7303 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7304 * user action, and return the semantic value and location in *YYVALP
7305 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7306 * have been destroyed (assuming the user action destroys all RHS
7307 * semantic values if invoked). */
7308 static YYRESULTTAG
7309 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7310 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
7311 {
7312 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7313 int yynrhs = yyrhsLength (yyopt->yyrule);
7314 YYRESULTTAG yyflag =
7315 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7316 if (yyflag != yyok)
7317 {
7318 yyGLRState *yys;
7319 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7320 yydestroyGLRState ("Cleanup: popping", yys, root);
7321 return yyflag;
7322 }
7323
7324 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7325 if (yynrhs == 0)
7326 /* Set default location. */
7327 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7328 {
7329 int yychar_current = yychar;
7330 YYSTYPE yylval_current = yylval;
7331 YYLTYPE yylloc_current = yylloc;
7332 yychar = yyopt->yyrawchar;
7333 yylval = yyopt->yyval;
7334 yylloc = yyopt->yyloc;
7335 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7336 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7337 yystackp, -1, yyvalp, yylocp, root);
7338 yychar = yychar_current;
7339 yylval = yylval_current;
7340 yylloc = yylloc_current;
7341 }
7342 return yyflag;
7343 }
7344
7345 #if YYDEBUG
7346 static void
7347 yyreportTree (yySemanticOption* yyx, int yyindent)
7348 {
7349 int yynrhs = yyrhsLength (yyx->yyrule);
7350 int yyi;
7351 yyGLRState* yys;
7352 yyGLRState* yystates[1 + YYMAXRHS];
7353 yyGLRState yyleftmost_state;
7354
7355 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7356 yystates[yyi] = yys;
7357 if (yys == YY_NULLPTR)
7358 {
7359 yyleftmost_state.yyposn = 0;
7360 yystates[0] = &yyleftmost_state;
7361 }
7362 else
7363 yystates[0] = yys;
7364
7365 if (yyx->yystate->yyposn < yys->yyposn + 1)
7366 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7367 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7368 yyx->yyrule - 1));
7369 else
7370 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7371 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7372 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7373 YY_CAST (long, yyx->yystate->yyposn)));
7374 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7375 {
7376 if (yystates[yyi]->yyresolved)
7377 {
7378 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7379 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7380 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7381 else
7382 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7383 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7384 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7385 YY_CAST (long, yystates[yyi]->yyposn)));
7386 }
7387 else
7388 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7389 }
7390 }
7391 #endif
7392
7393 static YYRESULTTAG
7394 yyreportAmbiguity (yySemanticOption* yyx0,
7395 yySemanticOption* yyx1, std::shared_ptr<ZScript::ASTFile>& root)
7396 {
7397 YY_USE (yyx0);
7398 YY_USE (yyx1);
7399
7400 #if YYDEBUG
7401 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7402 YY_FPRINTF ((stderr, "Option 1,\n"));
7403 yyreportTree (yyx0, 2);
7404 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7405 yyreportTree (yyx1, 2);
7406 YY_FPRINTF ((stderr, "\n"));
7407 #endif
7408
7409 yyerror (root, YY_("syntax is ambiguous"));
7410 return yyabort;
7411 }
7412
7413 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7414 * ending at YYS1. Has no effect on previously resolved states.
7415 * The first semantic option of a state is always chosen. */
7416 static void
7417 yyresolveLocations (yyGLRState *yys1, int yyn1,
7418 yyGLRStack *yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7419 {
7420 if (0 < yyn1)
7421 {
7422 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7423 if (!yys1->yyresolved)
7424 {
7425 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7426 int yynrhs;
7427 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7428 YY_ASSERT (yyoption);
7429 yynrhs = yyrhsLength (yyoption->yyrule);
7430 if (0 < yynrhs)
7431 {
7432 yyGLRState *yys;
7433 int yyn;
7434 yyresolveLocations (yyoption->yystate, yynrhs,
7435 yystackp, root);
7436 for (yys = yyoption->yystate, yyn = yynrhs;
7437 yyn > 0;
7438 yys = yys->yypred, yyn -= 1)
7439 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7440 }
7441 else
7442 {
7443 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7444 in reverse rightmost order. It is only necessary to invoke
7445 yyresolveLocations on a subforest for which yyresolveAction
7446 would have been invoked next had an ambiguity not been
7447 detected. Thus the location of the previous state (but not
7448 necessarily the previous state itself) is guaranteed to be
7449 resolved already. */
7450 yyGLRState *yyprevious = yyoption->yystate;
7451 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7452 }
7453 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7454 }
7455 }
7456 }
7457
7458 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7459 * perform the indicated actions, and set the semantic value of YYS.
7460 * If result != yyok, the chain of semantic options in YYS has been
7461 * cleared instead or it has been left unmodified except that
7462 * redundant options may have been removed. Regardless of whether
7463 * result = yyok, YYS has been left with consistent data so that
7464 * yydestroyGLRState can be invoked if necessary. */
7465 static YYRESULTTAG
7466 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7467 {
7468 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7469 yySemanticOption* yybest = yyoptionList;
7470 yySemanticOption** yypp;
7471 yybool yymerge = yyfalse;
7472 YYSTYPE yyval;
7473 YYRESULTTAG yyflag;
7474 YYLTYPE *yylocp = &yys->yyloc;
7475
7476 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7477 {
7478 yySemanticOption* yyp = *yypp;
7479
7480 if (yyidenticalOptions (yybest, yyp))
7481 {
7482 yymergeOptionSets (yybest, yyp);
7483 *yypp = yyp->yynext;
7484 }
7485 else
7486 {
7487 switch (yypreference (yybest, yyp))
7488 {
7489 case 0:
7490 yyresolveLocations (yys, 1, yystackp, root);
7491 return yyreportAmbiguity (yybest, yyp, root);
7492 break;
7493 case 1:
7494 yymerge = yytrue;
7495 break;
7496 case 2:
7497 break;
7498 case 3:
7499 yybest = yyp;
7500 yymerge = yyfalse;
7501 break;
7502 default:
7503 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7504 but some compilers complain if the default case is
7505 omitted. */
7506 break;
7507 }
7508 yypp = &yyp->yynext;
7509 }
7510 }
7511
7512 if (yymerge)
7513 {
7514 yySemanticOption* yyp;
7515 int yyprec = yydprec[yybest->yyrule];
7516 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7517 if (yyflag == yyok)
7518 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7519 {
7520 if (yyprec == yydprec[yyp->yyrule])
7521 {
7522 YYSTYPE yyval_other;
7523 YYLTYPE yydummy;
7524 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7525 if (yyflag != yyok)
7526 {
7527 yydestruct ("Cleanup: discarding incompletely merged value for",
7528 yy_accessing_symbol (yys->yylrState),
7529 &yyval, yylocp, root);
7530 break;
7531 }
7532 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7533 }
7534 }
7535 }
7536 else
7537 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7538
7539 if (yyflag == yyok)
7540 {
7541 yys->yyresolved = yytrue;
7542 yys->yysemantics.yyval = yyval;
7543 }
7544 else
7545 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7546 return yyflag;
7547 }
7548
7549 static YYRESULTTAG
7550 3789 yyresolveStack (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7551 {
7552
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3789 times.
3789 if (yystackp->yysplitPoint != YY_NULLPTR)
7553 {
7554 yyGLRState* yys;
7555 int yyn;
7556
7557
2/2
✓ Branch 0 taken 10221 times.
✓ Branch 1 taken 3789 times.
14010 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7558 14010 yys != yystackp->yysplitPoint;
7559 10221 yys = yys->yypred, yyn += 1)
7560 10221 continue;
7561
1/2
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
3789 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7562 , root));
7563 3789 }
7564 3789 return yyok;
7565 3789 }
7566
7567 /** Called when returning to deterministic operation to clean up the extra
7568 * stacks. */
7569 static void
7570 3846 yycompressStack (yyGLRStack* yystackp)
7571 {
7572 /* yyr is the state after the split point. */
7573 yyGLRState *yyr;
7574
7575
3/4
✓ Branch 0 taken 3846 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3789 times.
✓ Branch 3 taken 57 times.
3846 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7576 57 return;
7577
7578 {
7579 yyGLRState *yyp, *yyq;
7580
2/2
✓ Branch 0 taken 10221 times.
✓ Branch 1 taken 3789 times.
14010 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7581 14010 yyp != yystackp->yysplitPoint;
7582 10221 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7583 10221 yyp->yypred = yyr;
7584 }
7585
7586 3789 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7587 3789 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7588 3789 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7589 3789 yystackp->yysplitPoint = YY_NULLPTR;
7590 3789 yystackp->yylastDeleted = YY_NULLPTR;
7591
7592
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 10221 times.
14010 while (yyr != YY_NULLPTR)
7593 {
7594 10221 yystackp->yynextFree->yystate = *yyr;
7595 10221 yyr = yyr->yypred;
7596 10221 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7597 10221 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7598 10221 yystackp->yynextFree += 1;
7599 10221 yystackp->yyspaceLeft -= 1;
7600 }
7601 3846 }
7602
7603 static YYRESULTTAG
7604 11367 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7605 YYPTRDIFF_T yyposn, std::shared_ptr<ZScript::ASTFile>& root)
7606 {
7607
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 31337 times.
35126 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7608 {
7609 31337 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7610 31337 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7611 YY_CAST (long, yyk), yystate));
7612
7613 YY_ASSERT (yystate != YYFINAL);
7614
7615
2/2
✓ Branch 0 taken 6546 times.
✓ Branch 1 taken 24791 times.
31337 if (yyisDefaultedState (yystate))
7616 {
7617 YYRESULTTAG yyflag;
7618 6546 yyRuleNum yyrule = yydefaultAction (yystate);
7619
1/2
✓ Branch 0 taken 6546 times.
✗ Branch 1 not taken.
6546 if (yyrule == 0)
7620 {
7621 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7622 yymarkStackDeleted (yystackp, yyk);
7623 return yyok;
7624 }
7625 6546 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7626
1/2
✓ Branch 0 taken 6546 times.
✗ Branch 1 not taken.
6546 if (yyflag == yyerr)
7627 {
7628 YY_DPRINTF ((stderr,
7629 "Stack %ld dies "
7630 "(predicate failure or explicit user error).\n",
7631 YY_CAST (long, yyk)));
7632 yymarkStackDeleted (yystackp, yyk);
7633 return yyok;
7634 }
7635
1/2
✓ Branch 0 taken 6546 times.
✗ Branch 1 not taken.
6546 if (yyflag != yyok)
7636 return yyflag;
7637 6546 }
7638 else
7639 {
7640 24791 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7641 const short* yyconflicts;
7642 24791 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7643 24791 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7644
7645
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 24791 times.
28580 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7646 {
7647 YYRESULTTAG yyflag;
7648 3789 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7649 3789 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7650 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7651 7578 yyflag = yyglrReduce (yystackp, yynewStack,
7652 3789 *yyconflicts,
7653 3789 yyimmediate[*yyconflicts], root);
7654
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3789 times.
3789 if (yyflag == yyok)
7655
1/2
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
3789 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7656 yyposn, root));
7657 else if (yyflag == yyerr)
7658 {
7659 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7660 yymarkStackDeleted (yystackp, yynewStack);
7661 }
7662 else
7663 return yyflag;
7664 3789 }
7665
7666
2/2
✓ Branch 0 taken 21002 times.
✓ Branch 1 taken 3789 times.
24791 if (yyisShiftAction (yyaction))
7667 3789 break;
7668
2/2
✓ Branch 0 taken 17213 times.
✓ Branch 1 taken 3789 times.
21002 else if (yyisErrorAction (yyaction))
7669 {
7670 3789 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7671 3789 yymarkStackDeleted (yystackp, yyk);
7672 3789 break;
7673 }
7674 else
7675 {
7676 34426 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7677 17213 yyimmediate[-yyaction], root);
7678
1/2
✓ Branch 0 taken 17213 times.
✗ Branch 1 not taken.
17213 if (yyflag == yyerr)
7679 {
7680 YY_DPRINTF ((stderr,
7681 "Stack %ld dies "
7682 "(predicate failure or explicit user error).\n",
7683 YY_CAST (long, yyk)));
7684 yymarkStackDeleted (yystackp, yyk);
7685 break;
7686 }
7687
1/2
✓ Branch 0 taken 17213 times.
✗ Branch 1 not taken.
17213 else if (yyflag != yyok)
7688 return yyflag;
7689 }
7690 }
7691 }
7692 11367 return yyok;
7693 11367 }
7694
7695 /* Put in YYARG at most YYARGN of the expected tokens given the
7696 current YYSTACKP, and return the number of tokens stored in YYARG. If
7697 YYARG is null, return the number of expected tokens (guaranteed to
7698 be less than YYNTOKENS). */
7699 static int
7700 57 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7701 yysymbol_kind_t yyarg[], int yyargn)
7702 {
7703 /* Actual size of YYARG. */
7704 57 int yycount = 0;
7705 57 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7706
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yypact_value_is_default (yyn))
7707 {
7708 /* Start YYX at -YYN if negative to avoid negative indexes in
7709 YYCHECK. In other words, skip the first -YYN actions for
7710 this state because they are default actions. */
7711
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 int yyxbegin = yyn < 0 ? -yyn : 0;
7712 /* Stay within bounds of both yycheck and yytname. */
7713 57 int yychecklim = YYLAST - yyn + 1;
7714
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7715 int yyx;
7716
2/2
✓ Branch 0 taken 7043 times.
✓ Branch 1 taken 53 times.
7096 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7717
3/4
✓ Branch 0 taken 119 times.
✓ Branch 1 taken 6924 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 119 times.
7043 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7718 7039 && !yytable_value_is_error (yytable[yyx + yyn]))
7719 {
7720
1/2
✓ Branch 0 taken 119 times.
✗ Branch 1 not taken.
119 if (!yyarg)
7721 ++yycount;
7722
2/2
✓ Branch 0 taken 115 times.
✓ Branch 1 taken 4 times.
119 else if (yycount == yyargn)
7723 4 return 0;
7724 else
7725 115 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7726 115 }
7727 53 }
7728
2/6
✓ Branch 0 taken 53 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 53 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
53 if (yyarg && yycount == 0 && 0 < yyargn)
7729 yyarg[0] = YYSYMBOL_YYEMPTY;
7730 53 return yycount;
7731 57 }
7732
7733 static int
7734 57 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7735 yysymbol_kind_t yyarg[], int yyargn)
7736 {
7737
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
✓ Branch 2 taken 57 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 57 times.
✗ Branch 5 not taken.
57 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7738 /* Actual size of YYARG. */
7739 57 int yycount = 0;
7740 /* There are many possibilities here to consider:
7741 - If this state is a consistent state with a default action, then
7742 the only way this function was invoked is if the default action
7743 is an error action. In that case, don't check for expected
7744 tokens because there are none.
7745 - The only way there can be no lookahead present (in yychar) is if
7746 this state is a consistent state with a default action. Thus,
7747 detecting the absence of a lookahead is sufficient to determine
7748 that there is no unexpected or expected token to report. In that
7749 case, just report a simple "syntax error".
7750 - Don't assume there isn't a lookahead just because this state is a
7751 consistent state with a default action. There might have been a
7752 previous inconsistent state, consistent state with a non-default
7753 action, or user semantic action that manipulated yychar.
7754 - Of course, the expected token list depends on states to have
7755 correct lookahead information, and it depends on the parser not
7756 to perform extra reductions after fetching a lookahead from the
7757 scanner and before detecting a syntax error. Thus, state merging
7758 (from LALR or IELR) and default reductions corrupt the expected
7759 token list. However, the list is correct for canonical LR with
7760 one exception: it will still contain any token that will not be
7761 accepted due to an error action in a later state.
7762 */
7763
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yytoken != YYSYMBOL_YYEMPTY)
7764 {
7765 int yyn;
7766
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyarg)
7767 57 yyarg[yycount] = yytoken;
7768 57 ++yycount;
7769 114 yyn = yypcontext_expected_tokens (yystackp,
7770
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7771
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyn == YYENOMEM)
7772 return YYENOMEM;
7773 else
7774 57 yycount += yyn;
7775 57 }
7776 57 return yycount;
7777 57 }
7778
7779
7780
7781 static void
7782 57 yyreportSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7783 {
7784
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState != 0)
7785 return;
7786 {
7787 57 yybool yysize_overflow = yyfalse;
7788 57 char* yymsg = YY_NULLPTR;
7789 enum { YYARGS_MAX = 5 };
7790 /* Internationalized format string. */
7791 57 const char *yyformat = YY_NULLPTR;
7792 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7793 one per "expected"). */
7794 yysymbol_kind_t yyarg[YYARGS_MAX];
7795 /* Cumulated lengths of YYARG. */
7796 57 YYPTRDIFF_T yysize = 0;
7797
7798 /* Actual size of YYARG. */
7799 57 int yycount
7800 57 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7801
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yycount == YYENOMEM)
7802 yyMemoryExhausted (yystackp);
7803
7804
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
57 switch (yycount)
7805 {
7806 #define YYCASE_(N, S) \
7807 case N: \
7808 yyformat = S; \
7809 break
7810 default: /* Avoid compiler warnings. */
7811 YYCASE_(0, YY_("syntax error"));
7812 4 YYCASE_(1, YY_("syntax error, unexpected %s"));
7813 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7814 46 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7815 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7816 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7817 #undef YYCASE_
7818 }
7819
7820 /* Compute error message size. Don't count the "%s"s, but reserve
7821 room for the terminator. */
7822 57 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7823 {
7824 int yyi;
7825
2/2
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 57 times.
213 for (yyi = 0; yyi < yycount; ++yyi)
7826 {
7827 156 YYPTRDIFF_T yysz
7828 156 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7829
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 156 times.
156 if (YYSIZE_MAXIMUM - yysize < yysz)
7830 yysize_overflow = yytrue;
7831 else
7832 156 yysize += yysz;
7833 156 }
7834 }
7835
7836
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yysize_overflow)
7837 57 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7838
7839
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yymsg)
7840 {
7841 57 char *yyp = yymsg;
7842 57 int yyi = 0;
7843
2/2
✓ Branch 0 taken 2401 times.
✓ Branch 1 taken 57 times.
2458 while ((*yyp = *yyformat))
7844 {
7845
4/6
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 2245 times.
✓ Branch 2 taken 156 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 156 times.
2401 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7846 {
7847 156 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7848 156 yyformat += 2;
7849 156 }
7850 else
7851 {
7852 2245 ++yyp;
7853 2245 ++yyformat;
7854 }
7855 }
7856 57 yyerror (root, yymsg);
7857 57 YYFREE (yymsg);
7858 57 }
7859 else
7860 {
7861 yyerror (root, YY_("syntax error"));
7862 yyMemoryExhausted (yystackp);
7863 }
7864 }
7865 57 yynerrs += 1;
7866 57 }
7867
7868 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7869 yylval, and yylloc are the syntactic category, semantic value, and location
7870 of the lookahead. */
7871 static void
7872 57 yyrecoverSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7873 {
7874
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState == 3)
7875 /* We just shifted the error token and (perhaps) took some
7876 reductions. Skip tokens until we can proceed. */
7877 while (yytrue)
7878 {
7879 yysymbol_kind_t yytoken;
7880 int yyj;
7881 if (yychar == TOK_YYEOF)
7882 yyFail (yystackp, root, YY_NULLPTR);
7883 if (yychar != TOK_YYEMPTY)
7884 {
7885 /* We throw away the lookahead, but the error range
7886 of the shifted error token must take it into account. */
7887 yyGLRState *yys = yystackp->yytops.yystates[0];
7888 yyGLRStackItem yyerror_range[3];
7889 yyerror_range[1].yystate.yyloc = yys->yyloc;
7890 yyerror_range[2].yystate.yyloc = yylloc;
7891 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7892 yytoken = YYTRANSLATE (yychar);
7893 yydestruct ("Error: discarding",
7894 yytoken, &yylval, &yylloc, root);
7895 yychar = TOK_YYEMPTY;
7896 }
7897 yytoken = yygetToken (&yychar, root);
7898 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7899 if (yypact_value_is_default (yyj))
7900 return;
7901 yyj += yytoken;
7902 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7903 {
7904 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7905 return;
7906 }
7907 else if (! yytable_value_is_error (yytable[yyj]))
7908 return;
7909 }
7910
7911 /* Reduce to one stack. */
7912 {
7913 YYPTRDIFF_T yyk;
7914
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7915
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7916 57 break;
7917
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yyk >= yystackp->yytops.yysize)
7918 yyFail (yystackp, root, YY_NULLPTR);
7919
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7920 yymarkStackDeleted (yystackp, yyk);
7921 57 yyremoveDeletes (yystackp);
7922 57 yycompressStack (yystackp);
7923 }
7924
7925 /* Pop stack until we find a state that shifts the error token. */
7926 57 yystackp->yyerrState = 3;
7927
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 492 times.
549 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7928 {
7929 492 yyGLRState *yys = yystackp->yytops.yystates[0];
7930 492 int yyj = yypact[yys->yylrState];
7931
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 435 times.
492 if (! yypact_value_is_default (yyj))
7932 {
7933 435 yyj += YYSYMBOL_YYerror;
7934
2/6
✓ Branch 0 taken 435 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 435 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
435 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7935
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 435 times.
435 && yyisShiftAction (yytable[yyj]))
7936 {
7937 /* Shift the error token. */
7938 int yyaction = yytable[yyj];
7939 /* First adjust its location.*/
7940 YYLTYPE yyerrloc;
7941 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7942 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7943 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7944 &yylval, &yyerrloc);
7945 yyglrShift (yystackp, 0, yyaction,
7946 yys->yyposn, &yylval, &yyerrloc);
7947 yys = yystackp->yytops.yystates[0];
7948 break;
7949 }
7950 435 }
7951 492 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7952
2/2
✓ Branch 0 taken 435 times.
✓ Branch 1 taken 57 times.
492 if (yys->yypred != YY_NULLPTR)
7953 435 yydestroyGLRState ("Error: popping", yys, root);
7954 492 yystackp->yytops.yystates[0] = yys->yypred;
7955 492 yystackp->yynextFree -= 1;
7956 492 yystackp->yyspaceLeft += 1;
7957 }
7958
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7959 57 yyFail (yystackp, root, YY_NULLPTR);
7960 }
7961
7962 #define YYCHK1(YYE) \
7963 do { \
7964 switch (YYE) { \
7965 case yyok: break; \
7966 case yyabort: goto yyabortlab; \
7967 case yyaccept: goto yyacceptlab; \
7968 case yyerr: goto yyuser_error; \
7969 case yynomem: goto yyexhaustedlab; \
7970 default: goto yybuglab; \
7971 } \
7972 } while (0)
7973
7974 /*----------.
7975 | yyparse. |
7976 `----------*/
7977
7978 int
7979 60451 yyparse (std::shared_ptr<ZScript::ASTFile>& root)
7980 {
7981 int yyresult;
7982 yyGLRStack yystack;
7983 60451 yyGLRStack* const yystackp = &yystack;
7984 YYPTRDIFF_T yyposn;
7985
7986 60451 YY_DPRINTF ((stderr, "Starting parse\n"));
7987
7988 60451 yychar = TOK_YYEMPTY;
7989 60451 yylval = yyval_default;
7990 60451 yylloc = yyloc_default;
7991
7992
1/2
✓ Branch 0 taken 60451 times.
✗ Branch 1 not taken.
60451 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7993 goto yyexhaustedlab;
7994
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60394 times.
✗ Branch 3 not taken.
60451 switch (YYSETJMP (yystack.yyexception_buffer))
7995 {
7996 60394 case 0: break;
7997 57 case 1: goto yyabortlab;
7998 case 2: goto yyexhaustedlab;
7999 default: goto yybuglab;
8000 }
8001 60394 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
8002 60394 yyposn = 0;
8003
8004 60451 while (yytrue)
8005 {
8006 /* For efficiency, we have two loops, the first of which is
8007 specialized to deterministic operation (single stack, no
8008 potential ambiguity). */
8009 /* Standard mode. */
8010 478515987 while (yytrue)
8011 {
8012 478515987 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
8013 478515987 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
8014
2/2
✓ Branch 0 taken 478455593 times.
✓ Branch 1 taken 60394 times.
478515987 if (yystate == YYFINAL)
8015 60394 goto yyacceptlab;
8016
2/2
✓ Branch 0 taken 188536997 times.
✓ Branch 1 taken 289918596 times.
478455593 if (yyisDefaultedState (yystate))
8017 {
8018 188536997 yyRuleNum yyrule = yydefaultAction (yystate);
8019
1/2
✓ Branch 0 taken 188536997 times.
✗ Branch 1 not taken.
188536997 if (yyrule == 0)
8020 {
8021 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8022 yyreportSyntaxError (&yystack, root);
8023 goto yyuser_error;
8024 }
8025
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 188536997 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
188536997 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
8026 188536997 }
8027 else
8028 {
8029 289918596 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
8030 const short* yyconflicts;
8031 289918596 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
8032
2/2
✓ Branch 0 taken 289914807 times.
✓ Branch 1 taken 3789 times.
289918596 if (*yyconflicts)
8033 /* Enter nondeterministic mode. */
8034 3789 break;
8035
2/2
✓ Branch 0 taken 77026815 times.
✓ Branch 1 taken 212887992 times.
289914807 if (yyisShiftAction (yyaction))
8036 {
8037 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
8038 77026815 yychar = TOK_YYEMPTY;
8039 77026815 yyposn += 1;
8040 77026815 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
8041
1/2
✓ Branch 0 taken 77026815 times.
✗ Branch 1 not taken.
77026815 if (0 < yystack.yyerrState)
8042 yystack.yyerrState -= 1;
8043 77026815 }
8044
2/2
✓ Branch 0 taken 212887935 times.
✓ Branch 1 taken 57 times.
212887992 else if (yyisErrorAction (yyaction))
8045 {
8046 57 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8047 /* Issue an error message unless the scanner already
8048 did. */
8049
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yychar != TOK_YYerror)
8050 57 yyreportSyntaxError (&yystack, root);
8051 57 goto yyuser_error;
8052 }
8053 else
8054
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 212887935 times.
✗ Branch 5 not taken.
212887935 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
8055 }
8056 }
8057
8058 /* Nondeterministic mode. */
8059 3789 while (yytrue)
8060 {
8061 yysymbol_kind_t yytoken_to_shift;
8062 YYPTRDIFF_T yys;
8063
8064
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 3789 times.
7578 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8065 3789 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
8066
8067 /* yyprocessOneStack returns one of three things:
8068
8069 - An error flag. If the caller is yyprocessOneStack, it
8070 immediately returns as well. When the caller is finally
8071 yyparse, it jumps to an error label via YYCHK1.
8072
8073 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
8074 (&yystack, yys), which sets the top state of yys to NULL. Thus,
8075 yyparse's following invocation of yyremoveDeletes will remove
8076 the stack.
8077
8078 - yyok, when ready to shift a token.
8079
8080 Except in the first case, yyparse will invoke yyremoveDeletes and
8081 then shift the next token onto all remaining stacks. This
8082 synchronization of the shift (that is, after all preceding
8083 reductions on all stacks) helps prevent double destructor calls
8084 on yylval in the event of memory exhaustion. */
8085
8086
2/2
✓ Branch 0 taken 7578 times.
✓ Branch 1 taken 3789 times.
11367 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8087
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7578 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7578 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
8088 3789 yyremoveDeletes (&yystack);
8089
1/2
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
3789 if (yystack.yytops.yysize == 0)
8090 {
8091 yyundeleteLastStack (&yystack);
8092 if (yystack.yytops.yysize == 0)
8093 yyFail (&yystack, root, YY_("syntax error"));
8094 YYCHK1 (yyresolveStack (&yystack, root));
8095 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8096 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8097 yyreportSyntaxError (&yystack, root);
8098 goto yyuser_error;
8099 }
8100
8101 /* If any yyglrShift call fails, it will fail after shifting. Thus,
8102 a copy of yylval will already be on stack 0 in the event of a
8103 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
8104 before the loop to make sure the user destructor for yylval isn't
8105 called twice. */
8106
2/4
✓ Branch 0 taken 3789 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3789 times.
3789 yytoken_to_shift = YYTRANSLATE (yychar);
8107 3789 yychar = TOK_YYEMPTY;
8108 3789 yyposn += 1;
8109
2/2
✓ Branch 0 taken 3789 times.
✓ Branch 1 taken 3789 times.
7578 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8110 {
8111 3789 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
8112 const short* yyconflicts;
8113 3789 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
8114 &yyconflicts);
8115 /* Note that yyconflicts were handled by yyprocessOneStack. */
8116 3789 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
8117 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
8118 3789 yyglrShift (&yystack, yys, yyaction, yyposn,
8119 &yylval, &yylloc);
8120 3789 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
8121 YY_CAST (long, yys),
8122 yystack.yytops.yystates[yys]->yylrState));
8123 3789 }
8124
8125
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3789 times.
3789 if (yystack.yytops.yysize == 1)
8126 {
8127
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3789 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3789 YYCHK1 (yyresolveStack (&yystack, root));
8128 3789 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8129 3789 yycompressStack (&yystack);
8130 3789 break;
8131 }
8132 }
8133 3789 continue;
8134 yyuser_error:
8135 57 yyrecoverSyntaxError (&yystack, root);
8136 57 yyposn = yystack.yytops.yystates[0]->yyposn;
8137 }
8138
8139 yyacceptlab:
8140 60394 yyresult = 0;
8141 60394 goto yyreturnlab;
8142
8143 yybuglab:
8144 YY_ASSERT (yyfalse);
8145 goto yyabortlab;
8146
8147 yyabortlab:
8148 57 yyresult = 1;
8149 57 goto yyreturnlab;
8150
8151 yyexhaustedlab:
8152 yyerror (root, YY_("memory exhausted"));
8153 yyresult = 2;
8154 goto yyreturnlab;
8155
8156 yyreturnlab:
8157
2/2
✓ Branch 0 taken 60394 times.
✓ Branch 1 taken 57 times.
60451 if (yychar != TOK_YYEMPTY)
8158 57 yydestruct ("Cleanup: discarding lookahead",
8159
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 57 times.
57 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8160
8161 /* If the stack is well-formed, pop the stack until it is empty,
8162 destroying its entries as we go. But free the stack regardless
8163 of whether it is well-formed. */
8164
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 60451 times.
60451 if (yystack.yyitems)
8165 {
8166 60451 yyGLRState** yystates = yystack.yytops.yystates;
8167
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 60451 times.
60451 if (yystates)
8168 {
8169 60451 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8170 YYPTRDIFF_T yyk;
8171
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 60451 times.
60508 for (yyk = 0; yyk < yysize; yyk += 1)
8172
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 60394 times.
60451 if (yystates[yyk])
8173 {
8174
2/2
✓ Branch 0 taken 181182 times.
✓ Branch 1 taken 60394 times.
241576 while (yystates[yyk])
8175 {
8176 181182 yyGLRState *yys = yystates[yyk];
8177 181182 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8178
2/2
✓ Branch 0 taken 120788 times.
✓ Branch 1 taken 60394 times.
181182 if (yys->yypred != YY_NULLPTR)
8179 120788 yydestroyGLRState ("Cleanup: popping", yys, root);
8180 181182 yystates[yyk] = yys->yypred;
8181 181182 yystack.yynextFree -= 1;
8182 181182 yystack.yyspaceLeft += 1;
8183 }
8184 60394 break;
8185 }
8186 60451 }
8187 60451 yyfreeGLRStack (&yystack);
8188 60451 }
8189
8190 60451 return yyresult;
8191 }
8192
8193 /* DEBUGGING ONLY */
8194 #if YYDEBUG
8195 /* Print *YYS and its predecessors. */
8196 static void
8197 yy_yypstack (yyGLRState* yys)
8198 {
8199 if (yys->yypred)
8200 {
8201 yy_yypstack (yys->yypred);
8202 YY_FPRINTF ((stderr, " -> "));
8203 }
8204 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8205 }
8206
8207 /* Print YYS (possibly NULL) and its predecessors. */
8208 static void
8209 yypstates (yyGLRState* yys)
8210 {
8211 if (yys == YY_NULLPTR)
8212 YY_FPRINTF ((stderr, "<null>"));
8213 else
8214 yy_yypstack (yys);
8215 YY_FPRINTF ((stderr, "\n"));
8216 }
8217
8218 /* Print the stack #YYK. */
8219 static void
8220 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8221 {
8222 yypstates (yystackp->yytops.yystates[yyk]);
8223 }
8224
8225 /* Print all the stacks. */
8226 static void
8227 yypdumpstack (yyGLRStack* yystackp)
8228 {
8229 #define YYINDEX(YYX) \
8230 YY_CAST (long, \
8231 ((YYX) \
8232 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8233 : -1))
8234
8235 yyGLRStackItem* yyp;
8236 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8237 {
8238 YY_FPRINTF ((stderr, "%3ld. ",
8239 YY_CAST (long, yyp - yystackp->yyitems)));
8240 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8241 {
8242 YY_ASSERT (yyp->yystate.yyisState);
8243 YY_ASSERT (yyp->yyoption.yyisState);
8244 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8245 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8246 YY_CAST (long, yyp->yystate.yyposn),
8247 YYINDEX (yyp->yystate.yypred)));
8248 if (! yyp->yystate.yyresolved)
8249 YY_FPRINTF ((stderr, ", firstVal: %ld",
8250 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8251 }
8252 else
8253 {
8254 YY_ASSERT (!yyp->yystate.yyisState);
8255 YY_ASSERT (!yyp->yyoption.yyisState);
8256 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8257 yyp->yyoption.yyrule - 1,
8258 YYINDEX (yyp->yyoption.yystate),
8259 YYINDEX (yyp->yyoption.yynext)));
8260 }
8261 YY_FPRINTF ((stderr, "\n"));
8262 }
8263
8264 YY_FPRINTF ((stderr, "Tops:"));
8265 {
8266 YYPTRDIFF_T yyi;
8267 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8268 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8269 YYINDEX (yystackp->yytops.yystates[yyi])));
8270 YY_FPRINTF ((stderr, "\n"));
8271 }
8272 #undef YYINDEX
8273 }
8274 #endif
8275
8276 #undef yylval
8277 #undef yychar
8278 #undef yynerrs
8279 #undef yylloc
8280
8281
8282
8283
8284 #line 2525 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8285
8286
8287 /* programs */
8288
8289 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8290 {
8291 ostringstream out;
8292 out << msg << " ["
8293 << curfilename << " "
8294 << "Line " << row << " "
8295 << "Column " << col;
8296 if (yyleng)
8297 out << " '" << txt << "'";
8298 out << "]";
8299 return out.str();
8300 }
8301 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8302 {
8303 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8304 }
8305 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8306 {
8307 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8308 zparser_warn_out(message);
8309 }
8310 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8311 {
8312 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8313 zparser_error_out(message);
8314 }
8315 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8316 {
8317 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8318 }
8319
8320 void yyerror(std::shared_ptr<ASTFile>&, const char *s)
8321 {
8322 yyerrmsg(s);
8323 }
8324
8325 namespace ZScript
8326 {
8327 std::shared_ptr<ASTFile> parseFile(std::string const& filename)
8328 {
8329 std::shared_ptr<ASTFile> result;
8330
8331 // Reset lexer.
8332 yyin = NULL;
8333 resetLexer();
8334
8335 // Read in the file.
8336 yyin = fopen(filename.c_str(), "r");
8337 yyout = std::tmpfile();
8338 if (!yyin)
8339 {
8340 zconsole_error("Can't open input file");
8341 return nullptr;
8342 }
8343 curfilename = filename;
8344
8345 // Run the parser.
8346 if (yyparse(result))
8347 {
8348 result.reset();
8349 }
8350 fclose(yyout);
8351 fclose(yyin);
8352
8353 return result;
8354 }
8355 };
8356